【问题标题】:java.lang.IllegalStateException MediaPlayerjava.lang.IllegalStateException MediaPlayer
【发布时间】:2016-11-07 01:25:47
【问题描述】:

在我的应用程序中,我使用 VideoView 来播放 MediaPlayer,并且在某些情况下会释放此错误:

java.lang.IllegalStateException
at android.media.MediaPlayer.prepareAsync(Native Method)
at android.widget.VideoView.openVideo(VideoView.java:350)
at android.widget.VideoView.setVideoURI(VideoView.java:256)
at android.widget.VideoView.setVideoURI(VideoView.java:239)
at com.wul4.paythunder.hologram.MainActivity.cargarVideo(MainActivity.java:261)
at com.wul4.paythunder.hologram.MainActivity$6.run(MainActivity.java:395)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我加载视频的功能是:

public static void cargarVideo(final String video){

    Uri path = Uri.parse(video);

    Video.setVideoURI(path);

    if(video.contains(NetworkUtils.nombreVideo(prefs.getString("listen",""))) ||
            video.contains(NetworkUtils.nombreVideo(prefs.getString("talk","")))) {
        Video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                Log.e("####", "onPrepared");
                mp.setLooping(true);
            }
        });
    Video.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {

                Log.e("####", "onCompletion");

                cargarVideo(video);

            }
        });
    }


    Video.start();

}

这个错误不知道是什么,所以如果有人知道或已经发生了,你可以躺下手,他会很感激的。

提前致谢

编辑

我搜索并阅读到解决方案可能在于方法调用setOnPreparedListener包括在函数onPrepared视频初始化-->mp.start()

我试过了,现在好像还是一样,不知道以后会不会出现同样的错误

【问题讨论】:

  • 不,在这种情况下是在“OnePlus - A0001”中
  • 你应该在 setOnPreparedListener 中调用 video.start()
  • @Meenaxi 我试过了,还没有解决,把它放在方法setOnPreparedListened 出现错误就行了Uri path = Uri.parse(video); 所以我正在考虑使用函数@987654328 @intead of setVideoURI(path); 看看它是否有效

标签: java android android-mediaplayer


【解决方案1】:

您是否尝试过查看 MediaPlayer 实例的生命周期?

https://developer.android.com/reference/android/media/MediaPlayer.html

从我所看到的情况来看,您没有正确地“重置” MediaPlayer 对象,以便它可以再次正确地重新运行。

尝试使用 MediaPlayer.reset() 看看它是否有效。

@Override
            public void onCompletion(MediaPlayer mediaPlayer) {

                Log.e("####", "onCompletion");

                // Reset the player here

                cargarVideo(video);

            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多