Java.lang.IllegalStateException en el método MediaPlayer.isplaying ()

public static MediaPlayer mp=null; public static void playGeneric(int name, final ImageButton button,final ImageButton pervious,Context context) { button.setEnabled(false); button.setClickable(false); pervious.setEnabled(false); pervious.setClickable(false); try{ if(mp != null && mp.isPlaying()) { mp.stop(); mp.release(); mp = null; mp=MediaPlayer.create(context, name); mp.start(); } else { mp = MediaPlayer.create(context, name); mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer arg0) { //mp.prepare(); mp.start(); } }); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mp.release(); System.out.println("Object released"); button.setEnabled(true); button.setClickable(true); pervious.setEnabled(true); pervious.setClickable(true); } }); } } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); e.getMessage(); } catch (NullPointerException e) { // TODO Auto-generated catch block e.printStackTrace(); e.getMessage(); } } 

Dame java.lang.IllegalStateException en el método mp.isplaying ().

Quiero parar la música si está jugando y toco otra canción una tras otra.

Logcat:

 10-14 15:12:05.474: E/MediaPlayer(15411): prepareAsync called in state 8 10-14 15:12:05.474: W/System.err(15411): java.lang.IllegalStateException 10-14 15:12:05.474: W/System.err(15411): at android.media.MediaPlayer.prepare(Native Method) 10-14 15:12:05.474: W/System.err(15411): at com.rogerscenter.LearnReadWriteSpell.Utility.Music.playGeneric(Music.java:93) 10-14 15:12:05.474: W/System.err(15411): at com.rogerscenter.LearnReadWriteSpell.LetterCategory.Letter_Lesson1_activity.onCreate(Letter_Lesson1_activity.java:140) 10-14 15:12:05.474: W/System.err(15411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 10-14 15:12:05.474: W/System.err(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 10-14 15:12:05.474: W/System.err(15411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 10-14 15:12:05.474: W/System.err(15411): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 10-14 15:12:05.474: W/System.err(15411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 10-14 15:12:05.484: W/System.err(15411): at android.os.Handler.dispatchMessage(Handler.java:99) 10-14 15:12:05.484: W/System.err(15411): at android.os.Looper.loop(Looper.java:123) 10-14 15:12:05.484: W/System.err(15411): at android.app.ActivityThread.main(ActivityThread.java:3647) 10-14 15:12:05.484: W/System.err(15411): at java.lang.reflect.Method.invokeNative(Native Method) 10-14 15:12:05.484: W/System.err(15411): at java.lang.reflect.Method.invoke(Method.java:507) 10-14 15:12:05.484: W/System.err(15411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 10-14 15:12:05.484: W/System.err(15411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 10-14 15:12:05.484: W/System.err(15411): at dalvik.system.NativeStart.main(Native Method) 

Como android docs sugieren que si mp es si no se ha inicializado en ese momento java.lang.IllegalStateException se lanzará por lo que tiene que initilize primero o tienes que escribir

Echa un vistazo a los documentos http://developer.android.com/reference/android/media/MediaPlayer.html#isPlaying ()

Intenta de esta manera

  mp=MediaPlayer.create(context, name); try { if (mp.isPlaying()) { mp.stop(); mp.release(); mp=MediaPlayer.create(context, name); } mp.start(); } catch (Exception e) { } 

Intente cambiar mp.release() en reset() . Que podría ayudarle.

Utilice runOnUiThread para preparar mediaRecorder.

 private boolean prepareMediaRecorder() { mediaRecorder = new MediaRecorder(); runOnUiThread(new Runnable() { @Override public void run() { mediaRecorder.reset(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setOutputFile(filePath); try { mediaRecorder.prepare(); } catch (IOException e) { mediaRecorder = null; return; } mediaRecorder.start(); recording = true; } }); return true; } 
  • RecyclerView desordenado los datos al desplazarse
  • Acceso a campos desde un objeto proxy
  • IOException e es nulo
  • Instalar paquetes de python en android
  • ¿Cómo utilizar textview en la pantalla de Preferencias de Android?
  • ¿Es String una primitiva o un Objeto en Android o Java?
  • Android - Extensiones de Google Maps - IllegalArgumentException
  • ¿Cómo puedo utilizar el mensaje de la nube Firebase en un proyecto eclipse?
  • Anular los temas predeterminados de Android
  • Serialización y des-serialización de android.graphics.Bitmap en Java
  • No se puede añadir dependecy en gradle (Android Studio)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.