6

我有一个里面有 html 视频的 webview。我想全屏显示这个视频,所以我覆盖onShowCustomView了我WebChromeClient的使用VideoView. 这在 2.3 中效果很好,但是在 4.xonShowCustomView中永远不会被调用。视频仍然会播放,但是,它是从 web 视图中播放的,除了单击播放和停止之外没有任何控件。

另外,我有 hardwareAccelerated="true"。

知道为什么onShowCustomView从未被调用吗?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    webView = (WebView) findViewById(R.id.webView);

    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.setWebViewClient(new WebViewClient());
    webView.setWebChromeClient(new MyChromeClient());

    webView.loadUrl(URL);

}

private class MyChromeClient extends WebChromeClient implements
        OnCompletionListener, OnErrorListener, OnPreparedListener {

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        Log.d("ma", "onShowCustomView");
    }

...
4

2 回答 2

9

好吧,在挣扎了一段时间后,我终于找到了原因。在 Android 4.x 中,您必须使用 'video' 标签中的 html 'controls' 属性来显示控件。显示这些控件后,您可以单击将调用“onShowCustomView”的全屏按钮。由于嵌入式视频在 4.x 中可用,并且您可以选择使用控件进入全屏模式,因此在播放时不会自动调用 onShowCustomView。不幸的是,这在 Android 文档中的记录很差。

于 2012-09-13T03:20:25.230 回答
0

这对我有用。

在使用 vimeo 视频制作网络应用程序时,我发现了一个“怪癖解决方案”。我测试了两个设备。一个是Android 4.2.x 版本,另一个是4.4.x 版本。一个能够以全屏模式播放视频,另一个不能。

在阅读了官方文档' Migrating to WebView in Android 4.4 '后,我发现两个设备中存在不同的'UserAgent'名称。

一个有这个userAgent。

Mozilla/5.0 (Linux; Android 4.4.2; SHV-E300L Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36

另一个有这个。

Mozilla/5.0 (Linux; Android 4.4.4; SHV-E370K Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36

我认为 chrome 版本是制作全屏视频的解决方案。所以我把chrome版本改成了30.x。

WebSettings s = mWebView.getSettings();
//Change UserAgent to play fullscreen vimeo's videos.
String agent = s.getUserAgentString();
String p = "(Chrome/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(agent);
if(matcher.find()) {
    agent = matcher.replaceFirst("Chrome/30.0.0.0");
}
s.setUserAgentString(agent);

哦~~我可以睡觉了...(对不起我的英语不好)

于 2015-11-26T09:58:19.453 回答