在我的应用程序中,我使用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()
我试过了,现在看起来同样的行为,不知道将来是否会再次出现同样的错误
答案 0 :(得分:0)
您是否尝试过查看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);
}