Jon*_*n G 7 video android media-player android-videoview
我有一个包含VideoView视频和播放列表的片段.它允许用户单击播放列表中的视频来交换内容VideoView.它还允许用户在每个视频周围寻找.在这里发布整个代码是不可行的,但我试图缩小问题,以便我可以添加一个示例.
我发现,如果我迅速改变其中的来源VideoView并寻求VideoView,我得到一个IllegalStateException:
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x415fe8b0)
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.IllegalStateException
E/AndroidRuntime: at android.media.MediaPlayer.getVideoWidth(Native Method)
E/AndroidRuntime: at android.widget.VideoView$2.onPrepared(VideoView.java:346)
E/AndroidRuntime: at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:2048)
E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime: at android.os.Looper.loop(Looper.java:213)
E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5225)
E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
如您所见,我的任何代码都没有引用.如果我慢慢地执行相同的操作,我似乎没有相同的问题.从阅读如下问题:
调用MediaPlayer.reset()的IllegalStateException
http://developer.android.com/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States
我假设当玩家处于无效状态时我正在执行动作,但我不知道该动作是什么.我MediaPlayer.OnErrorListener有一套VideoView,但我没有在日志中看到任何错误.我不叫reset或release在VideoView任何点.
我用以下内容初始化播放器:
localPlayerVideoView = (VideoView) view.findViewById(R.id.player)
MediaController mediaController = new MediaController(getActivity());
mediaController.setVisibility(View.GONE);
mediaController.setAnchorView(localPlayerVideoView);
localPlayerVideoView.setMediaController(mediaController);
localPlayerVideoView.setVideoPath(file.getAbsolutePath());
localPlayerVideoView.setOnPreparedListener(localOnPreparedListener);
localPlayerVideoView.setOnErrorListener(localOnErrorListener);
localPlayerVideoView.setOnInfoListener(localOnInfoListener);
localPlayerVideoView.requestFocus();
Run Code Online (Sandbox Code Playgroud)
准备好了:
localPlayerVideoView.seekTo(time);
localPlayerVideoView.start();
Run Code Online (Sandbox Code Playgroud)
交换视频:
localPlayerVideoView.setOnPreparedListener(null);
localPlayerVideoView.setPlayPauseListener(null);
localPlayerVideoView.suspend();
localPlayerVideoView.setVideoPath(file.getAbsolutePath());
localPlayerVideoView.setOnPreparedListener(localOnPreparedListener);
localPlayerVideoView.setPlayPauseListener(localPlayPauseListener);
localPlayerVideoView.requestFocus();
Run Code Online (Sandbox Code Playgroud)
寻求视频:
localPlayerVideoView.seekTo(time);
localPlayerVideoView.pause();
Run Code Online (Sandbox Code Playgroud)
在崩溃发生之前,我已经记录了这些是VideoView我调用的函数:
setOnPreparedListener(null)
setPlayPauseListener(null)
suspend
setVideoPath
setOnPreparedListener
setPlayPauseListener
requestFocus
onPrepared
onPlaying
getCurrentPosition
onPlaying
getCurrentPosition
getCurrentPosition
onInfo: what: 3
canPause
pause
setOnPreparedListener(null)
setPlayPauseListener(null)
suspend
setVideoPath
setOnPreparedListener
setPlayPauseListener
requestFocus
onPrepared
onPlaying
getCurrentPosition
canPause
pause
canPause
pause
setOnPreparedListener(null)
setPlayPauseListener(null)
suspend
setVideoPath
setOnPreparedListener
setPlayPauseListener
requestFocus
Run Code Online (Sandbox Code Playgroud)
我该如何追踪这个错误?
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |