活动恢复并重新启动时,VideoView会停止显示

时间:2012-02-15 09:07:20

标签: android video-streaming

我正在使用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的代码。

问题的用例是:

  1. 打开应用程序并启动视频
  2. 我最小化了进入Android桌面的应用程序
  3. 使用其他应用程序
  4. 重新打开或重新触发视频应用
  5. 视频未显示且未运行。我必须重新点击VideoView
  6. 问题是,怎样才能再次重新显示视频?我是否应该将视频放入start(),stop()或暂停()?

    欢迎任何帮助。

    TA

1 个答案:

答案 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我检查我是否有关于最后位置的任何信息。如果存在,那么我使用该参数(搜索)准备播放器(setVideoPathrequestFocusstart),否则不使用(seek = 0)。

这是我的解决方案:)