Intereting Posts
Ресурс Android @style не разрешен Одиночный наблюдаемый с несколькими подписчиками Как получить ширину фрагмента? WebView с встроенным инсталляционным запуском Controls Исключения и сбой Удалить границу, отложить из диалога Прогресс на фоне элемента списка Ошибка WebView. Создание приложения для Android для просмотра моего веб-сайта Environment.getExternalStoragePublicDirectory предоставляет внутреннее хранилище Пользовательский onInterceptTouchEvent в ListView Экран входа в систему Android Facebook без клавиатуры System.currentTimeMillis () выдает неправильный вывод android Как получить полную информацию о транзакции в PayPal, используя pay_id в paypal android sdk Android: Как установить ширину и высоту AlertDialog и кнопку стиля AlertDialog? Показать Android DialogFragment как диалог в портретном режиме и как часть активности в ландшафтном режиме Обратный отсчет при показе дней в часах минут секунд с использованием таймера обратного отсчета в андроиде

Java.lang.IllegalStateException в методе 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(); } } 

Дайте java.lang.IllegalStateException метод mp.isplaying ().

Я хочу остановить музыку, если она играет и играть другую песню один за другим.

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) 

Как и в документах Android, предположим, что если mp is if не был инициализирован в это время, java.lang.IllegalStateException будет выбрано так, что вы должны сначала инициализировать, или вам нужно написать

Проверьте документы http://developer.android.com/reference/android/media/MediaPlayer.html#isPlaying ()

Попробуйте это

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

Попробуйте изменить mp.release() в reset() . Что может помочь вам.

Используйте runOnUiThread для подготовки медиарекордера.

 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; }