1

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

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

4

4 回答 4

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`
    }
}
于 2013-07-17T07:04:20.480 回答
1

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

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

于 2013-04-02T14:26:07.663 回答
0

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

于 2013-04-02T14:59:41.353 回答
0

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

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

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

于 2013-10-11T12:25:12.530 回答