Android中的WebView上的HTML5内联视频回调

时间:2013-04-02 13:33:40

标签: android html5 android-webview html5-video

在android webview中,我设置了web chrome客户端并启用了硬件加速。在我的网页中,我有一个html5视频(内联)。当正在播放视频并按下主页按钮时,视频不会暂停,从而使用户的用户体验不佳。如何暂停所有在webview实例上播放的视频而不会破坏它?

P.S。请不要发布JS解决方案,因为我无法访问JS层(以及也有视频的iframe)

4 个答案:

答案 0 :(得分:2)

使用此代码

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout){
        FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView){
            VideoView video = (VideoView) frame.getFocusedChild();
            frame.removeView(video);
            a.setContentView(video);
            video.setOnCompletionListener(this);
            video.setOnErrorListener(this);
            video.start();
        }`enter code here`
    }
}

答案 1 :(得分:1)

默认情况下,WebView不提供类似浏览器的小部件,不会启用JavaScript并忽略网页错误。如果您的目标只是将一些HTML显示为UI的一部分,那么这可能很好;除了阅读之外,用户不需要与网页交互,并且网页不需要与用户交互。如果您真的想要一个完整的Web浏览器,那么您可能想要使用URL Intent调用Browser应用程序而不是使用WebView显示它

http://developer.android.com/reference/android/webkit/WebView.html

答案 2 :(得分:0)

您可以尝试拦截视频流并使用媒体播放器类显示它。之后,您可以访问流媒体。

答案 3 :(得分:0)

我有这个问题,现在我有一个简单明确的答案。这假设您的webview对象是活动或活动片段中的字段(成员,属性等)。

  • 在活动的onPause()中,调用webview.onPause();
  • 在活动的onResume()中,调用webview.onResume();

我在stackoverflow上的其他地方的onPause()位。需要onResume来重新建立webview对视频对象的引用。如果你没有这样做,如果你在播放应用程序时再次播放视频,你最终会遇到同样的问题。