試圖將「暫停」按鈕放入播放幾個聲音片段循環的應用程序中。mp.pause();正在崩潰應用程序
當我打電話給mp.pause();所有地獄崩潰,我完全失去了!
這裏是我使用的方法..
protected void managerOfSound(String theText) {
if (mp != null) {
mp.reset();
mp.release();
}
if (theText.equals(campfire))
mp = MediaPlayer.create(this, R.raw.campfire);
else if (theText.equals(calmthunder))
mp = MediaPlayer.create(this, R.raw.calmthunderstorm);
else if (theText.equals(rainthunder))
mp = MediaPlayer.create(this, R.raw.rainthunder);
else if (theText.equals(whalesgulls))
mp = MediaPlayer.create(this, R.raw.whalesandgulls);
else if (theText.equals(stopplaying))
mp.pause();
mp.start();
mp.setLooping(true);
}
這裏是一個logcat的(喵^ _ ^)
threadid=1: thread exiting with uncaught exception (group=0xb2f6c648)
FATAL EXCEPTION: main
java.lang.IllegalStateException
at android.media.MediaPlayer.setLooping(Native Method)
at com.tags4apps.soothingsounds.MainActivity.managerOfSound(MainActivity.java:83)
at com.tags4apps.soothingsounds.MainActivity$1.onClick(MainActivity.java:34)
android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我接受任何建議,現在
編輯:什麼是downvotes,我是晚上7點我一直在尋找一種方法來解決這個問題,因爲下午3點。所以downvoting它說,這是缺乏研究是一種不公平..
您是否嘗試過加入一樣,如果(mp.isPlaying)mp.pause支票()。這是一個很好的安全性,因爲不管怎樣都不應該調用pause()。 – Broatian
@Broatian本來我有「其他如果(theText.equals(stopplaying)&& mp.isPlaying())」但它沒有任何區別 – Slugshead
你的程序邏輯看起來有缺陷,例如,如果你輸入這個代碼與stopplaying作爲你的參數,那麼它看起來像你會重置()和釋放()mediaplayer實例,然後,*而不創建一個新的*嘗試暫停()開始()和setLooping()它。但是在你調用release()之後,那個實例是無效的並且不能被使用。還要注意,它不是直接觸發崩潰的pause(),而是setLooping()。 –