我正在使用VideoView来显示rtsp流媒体视频。您可以在下面找到代码片段。
OnCreate() {
...
// Setup video view
videoView = (VideoView) findViewById(R.id.videoViewStream);
videoView.setMediaController(new MediaController(this));
....
// Create a button
}
OnButtonClickListener() {
videoView.setVideoURI(Uri.parse(videoUri));
videoView.requestFocus();
}
我在OnResume和OnPause函数中没有关于VideoView的代码。
问题的用例是:
问题是,怎样才能再次重新显示视频?我是否应该将视频放入start(),stop()或暂停()?
欢迎任何帮助。
TA
答案 0 :(得分:2)
我建议您保存当前的视频邮件(以及重启时需要的所有内容)并在onPause中停止播放。在onDestroy中,您需要释放mediaPlayer。如果用户返回,您将获得onResume或onCreate。在onCreate中,你第一次再次启动播放器。在onResume中你创建一个安全检查,如果玩家真的被插入,如果一切正常,则开始播放(或等待点击事件)。检查最后保存的位置以寻找可能的搜索。
我会将OnButtonClickListener中的代码提取到单独的方法中,并从clickListener或onResume中调用该方法,如果您希望自动启动播放。
更新回答:
我在发布时犯了一个错误。这是由VideoView在stopPlayback
方法中完成的(查看grepcode上的VideoView源代码)。
我不知道您的RTSP流媒体服务器如何工作,但我使用的流媒体服务器不支持使用VideoView的seekTo
方法进行搜索。您可以在pause
中拨打onPause
,在start
中拨打onResume
,但这将从0开始播放(在我的情况下)。所以我不得不创建自定义搜索栏。但这是另一个故事。
在我的实施中,我在pause
中呼叫onPause
,在stopPlayback
呼叫onDestroy
。在onPause
我也存储了最后一个位置。在onCreate
我只能查看并设置媒体控件。在onResume
我检查我是否有关于最后位置的任何信息。如果存在,那么我使用该参数(搜索)准备播放器(setVideoPath
,requestFocus
,start
),否则不使用(seek = 0)。
这是我的解决方案:)