Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 活动恢复并重新启动时的VideoView停止显示_Android_Video Streaming - Fatal编程技术网

Android 活动恢复并重新启动时的VideoView停止显示

Android 活动恢复并重新启动时的VideoView停止显示,android,video-streaming,Android,Video Streaming,我正在使用VideoView显示rtsp流式视频。下面您可以找到一段代码 OnCreate() { ... // Setup video view videoView = (VideoView) findViewById(R.id.videoViewStream); videoView.setMediaController(new MediaController(this)); .... // Create a button } OnButton

我正在使用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函数中视频视图的代码

该问题的用例是:

  • 打开应用程序并启动视频
  • 我最小化应用程序以进入Android桌面
  • 使用其他应用程序
  • 重新打开或重新触发视频应用程序
  • 视频未显示且未运行。我必须重新点击视频视图
  • 问题是,如何才能让视频重新播放?我应该把开始()、停止()或暂停()放在视频上吗

    欢迎任何帮助


    TA

    我建议您保存当前视频位置(以及重新启动时所需的所有内容),并在onPause中停止播放。在onDestroy中,您需要释放mediaPlayer。如果用户返回,您将获得onResume或onCreate。在onCreate中,您将像第一次一样再次初始化播放器。在onResume中,您将创建一个安全检查,以确定播放机是否真的启动,以及是否一切正常,开始播放(或等待单击事件)。同时检查上次保存的位置,以查找可能的搜索

    我会将OnButtonClickListener中的代码提取到单独的方法中,并从clickListener或onResume中调用该方法(如果您希望自动开始播放)

    最新答复:

    我犯了一个释放错误。它是由VideoView在
    stopPlayback
    方法中完成的(查看grepcode上的VideoView源代码)。 我不知道您的RTSP流媒体服务器是如何工作的,但我使用的流媒体服务器不支持使用VideoView的
    seekTo
    方法进行搜索。您可以在
    onPause
    中调用
    pause
    ,在
    onResume
    中调用
    start
    ,但这将从0开始流(在我的情况下)。因此,我必须创建自定义seekbar。但那是另一个故事

    在我的实现中,我在
    onPause
    中调用
    pause
    ,在
    ondestory
    中调用
    stopPlayback
    。在
    onPause
    中,我还存储最后一个位置。在
    onCreate
    中,我只能查看和设置媒体控件。在
    onResume
    中,我检查是否有关于上一个职位的任何信息。如果存在,则我使用该参数(seek)准备播放器(
    setVideoPath
    requestFocus
    start
    ),否则不使用(seek=0)


    这就是我的解决方案:)

    我会接受你的建议并尝试编程。你认为我应该使用MediaPlayer而不是VideoView类吗?您有MediaPlayer的示例代码吗?你说onDestroy我必须释放mediaplayer,或者你只是想将其设置为null?Gallery电影播放器的代码是如何实现保存当前视频位置和恢复的一个很好的示例: