所以我一直收到这个错误:
07-27 17:13:13.817: INFO/My Music Test(11215): Initializing: Song Path - /mnt/sdcard/music/Changing.mp3
07-27 17:13:13.817: ERROR/My Music Test(11215): Error setting data source!
07-27 17:13:13.817: WARN/System.err(11215): java.lang.IllegalStateException
07-27 17:13:13.817: WARN/System.err(11215): at android.media.MediaPlayer.setDataSource(Native Method)
07-27 17:13:13.817: WARN/System.err(11215): at com.laytproducts.mymusictest.Game.initGame(Game.java:229)
07-27 17:13:13.817: WARN/System.err(11215): at com.laytproducts.mymusictest.Game$2.onClick(Game.java:258)
07-27 17:13:13.817: WARN/System.err(11215): at android.view.View.performClick(View.java:2408)
07-27 17:13:13.817: WARN/System.err(11215): at android.view.View$PerformClick.run(View.java:8818)
07-27 17:13:13.817: WARN/System.err(11215): at android.os.Handler.handleCallback(Handler.java:587)
07-27 17:13:13.817: WARN/System.err(11215): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 17:13:13.817: WARN/System.err(11215): at android.os.Looper.loop(Looper.java:143)
07-27 17:13:13.817: WARN/System.err(11215): at android.app.ActivityThread.main(ActivityThread.java:4701)
07-27 17:13:13.817: WARN/System.err(11215): at java.lang.reflect.Method.invokeNative(Native Method)
07-27 17:13:13.827: WARN/System.err(11215): at java.lang.reflect.Method.invoke(Method.java:521)
07-27 17:13:13.827: WARN/System.err(11215): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-27 17:13:13.827: WARN/System.err(11215): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-27 17:13:13.827: WARN/System.err(11215): at dalvik.system.NativeStart.main(Native Method)
由于路径没有任何问题,因此设置MediaPlayer的方式不一定有问题。它第一次工作,但是当我尝试播放不同的歌曲时,我得到了这个错误。
结束MediaPlayer的代码:
mp.stop();
mp.release();
开始代码:
mp.setDataSource(currentSongPath);//Error is here
mp.setVolume(100f, 100f);
mp.prepare();
Random mpRandom = new Random(27);
int maxDur = mp.getDuration() - 30000;
mpStartPos = mpRandom.nextInt(maxDur);
mp.seekTo(mpStartPos);
Log.i("My Music Test","Initializing: Start Pos - " + mpStartPos);
mp.start();
我现在已经编码了大约6个小时,所以很可能我错过了一些非常愚蠢的东西。
由于
答案 0 :(得分:2)
调用release()后,该对象不再可用。您在设置数据源之前是否正在调用新的MediaPlayer?