java - 设置数据源时出错

标签 java android media-player datasource

所以我不断收到此错误:

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 个小时,所以很可能我错过了一些非常愚蠢的东西。

谢谢

最佳答案

调用release()后,该对象将不再可用。您是否在设置数据源之前调用新的 MediaPlayer?

关于java - 设置数据源时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852788/

相关文章:

java - 在 RecyclerView 中访问同一行中的所有元素

android - 我的 Activity 不显示在 android wear 上

ios - 如何检查 hls url 是否受 DRM 保护?

android - 使用 android MediaPlayer 进行无缝播放

Android MediaPlayer 准备失败 : status = 0x1

java - 在 rxjava 中使用一系列 Observable 进行一对多映射

java - 在 bean 上使用 @PostConstruct 对 @SqlGroup 进行 Spring 测试

java - Android Studio - 无法创建 keystore

java - 无法将 ActionListener 添加到 JPanel?

Android RecyclerView 不更新 TextView