studio reproductor reproducir programacion para móviles musica mediaplayer fuente fondo desarrollo curso codigo aplicaciones android android-mediaplayer

reproductor - reproducir mp3 android studio



Android: reproducir sonido al hacer clic en el botón: excepción de puntero nulo (5)

Estoy tratando de reproducir un archivo de sonido con el clic de un botón. El sonido solo dura 1 seg. Juega bien las primeras veces que hago clic en el botón, pero después de un tiempo da una NullPointerException . Aquí está el código:

button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.start(); } });

Y aquí está la excepción:

07-29 23:07:27.690: ERROR/AndroidRuntime(10542): Uncaught handler: thread main exiting due to uncaught exception 07-29 23:07:27.710: ERROR/AndroidRuntime(10542): java.lang.NullPointerException 07-29 23:07:27.710: ERROR/AndroidRuntime(10542): at com.example.mypackage.Test$3.onClick(Test.java:270)


Deberías atrapar la excepción.

prueba este código:

try{ MediaPlayer mplayer = MediaPlayer.create(contextTop, R.raw.<your sound>); mplayer.start(); }catch(Exception e){ Log.d("<your TAG here>" , "error: " + e); }


Gracias por sus respuestas! ¡Lo aprecio!

Así es como finalmente logré que funcionara:

button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mp.release(); } }); mp.start(); } });


Podría resolver su problema,

button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { new Thread(){ public void run(){ mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.start(); }.start(); } });


Si todavía no se resuelve el problema, intente esto ya que me ayuda.

public void playSound(int resources){ try{ boolean mStartPlaying = true; MediaPlayer mPlayer=null; if (mStartPlaying==true){ mPlayer = new MediaPlayer(); Uri uri = Uri.parse("android.resource://YOUR_PACKAGENAME/" + resources); mPlayer.setDataSource(getApplicationContext(),uri); mPlayer.prepare(); mPlayer.start(); } else{ mPlayer.release(); mPlayer = null; } mStartPlaying = !mStartPlaying; } catch (IOException e){ Log.e(LOG_TAG, "prepare() failed"); } // MediaPlayer mp = MediaPlayer.create(SpyMainActivity.this, resources); // mp.start(); }

Disfrutar. :)


También puedes probar:

final soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); final sound = soundPool.load(this, R.raw.mysound, 1); button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { soundPool.play(sound, 1.0f, 1.0f, 0, 0, 1.0f); } });