有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 java。lang.IllegalStateException MediaPlayer

在我的应用程序中,我使用VideoView来播放MediaPlayer,在某些情况下,我释放了这个错误:

java.lang.IllegalStateException
at 安卓.media.MediaPlayer.prepareAsync(Native Method)
at 安卓.widget.VideoView.openVideo(VideoView.java:350)
at 安卓.widget.VideoView.setVideoURI(VideoView.java:256)
at 安卓.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 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.安卓.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()

我试过了,现在的行为似乎是一样的,不知道以后是否会再次出现同样的错误


共 (1) 个答案

  1. # 1 楼答案

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

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

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

    尝试使用MediaPlayer。重置()并查看它是否有效

    @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
    
                    Log.e("####", "onCompletion");
    
                    // Reset the player here
    
                    cargarVideo(video);
    
                }