当活动恢复并重新启动时,VideoView停止显示
我使用VideoView显示rtsp流式视频。在下面你可以找到代码片段。当活动恢复并重新启动时,VideoView停止显示
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的代码。
使用情况的问题是:
- 打开应用程序并开始播放视频
- 我尽量减少应用程序获取到Android桌面
- 使用其他应用程序
- 重新打开或重新触发视频应用程序
- 视频不显示并且未运行。我必须重新点击VideoView
问题是,怎么可能再次重新显示视频?我是否必须将视频的开始(),停止()或暂停()?
任何帮助,欢迎。
TA
我会建议你保存当前视频postition(和所有你在重启的情况下需要),并在onPause停止播放。在onDestroy中,你需要释放mediaPlayer。如果用户返回,您将获得onResume或onCreate。在onCreate中,你再次像第一次一样初始化玩家。在onResume中,如果玩家真的在线,并且一切正常,您可以创建一个安全检查开始播放(或等待点击事件)。检查上次保存的位置以寻找可能的位置。
我会从OnButtonClickListener中将代码提取到单独的方法中,并且如果您希望自动启动播放,请从clickListener或onResume中调用该方法。
最后回答:
我犯了一个错误释放。它由VideoView在stopPlayback
方法中完成(查看grepcode上的VideoView源代码)。 我不知道您的RTSP流媒体服务器如何工作,但我使用的流媒体服务器不支持使用VideoView的seekTo
方法进行搜索。你可以拨pause
在和start
在onResume
但这将从0开始流(在我的情况)。所以我不得不创建自定义搜索栏。但这是另一回事。
在我的实施中,我打电话pause
在和stopPlayback
在onDestroy
。在我也存储最后的位置。在onCreate
我只能看到并设置媒体控件。在onResume
我检查我是否有任何有关最后位置的信息。如果存在这种情况,则我使用该参数(seek)准备播放器(setVideoPath
,requestFocus
,start
),否则无(seek = 0)。
这是我的解决方案:)
我会接受您的建议,并尝试对其进行编程。你认为我应该使用MediaPlayer而不是VideoView类吗?您是否有MediaPlayer的任何示例代码?我问你这么说,onDestroy我必须发布mediaplayer,或者你只是想把它设置为null? – jlanza 2012-02-15 14:57:45
我会更新我的答案;) – zoki 2012-02-15 17:22:04
Gallery电影播放器的代码是如何实现当前视频位置和简历保存的一个很好的示例: http://grepcode.com/file/repository.grepcode.com /java/ext/com.google.android/android-apps/4.0.3_r1/com/android/gallery3d/app/MoviePlayer.java?av=f – inky 2012-06-19 19:23:25