簡體   English   中英

顯示HTML5視頻全屏

[英]Show HTML5 Video Fullscreen

我有一個webview里面有html視頻。 我想說明這個視頻全屏所以我重寫onShowCustomView我的WebChromeClient使用VideoView 這在2.3中工作得很好,但是在4.x onShowCustomView中永遠不會被調用。 視頻仍然會播放,但是,除了點擊播放和停止之外,它還可以在webview中播放而無需任何控制。

另外,我有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");
    }

...

經過一段時間的努力,我終於找到了原因。 在Android 4.x中,您必須使用'video'標記中的html'controls'屬性來顯示控件。 顯示這些控件后,您可以單擊全屏按鈕,然后調用'onShowCustomView'。 由於嵌入式視頻在4.x中可用,並且您可以選擇使用控件進入全屏,因此不會在播放時自動調用onShowCustomView。 不幸的是,這在Android文檔中的記錄非常糟糕。

這適合我。

我在使用vimeo視頻制作網絡應用時發現了一個“怪癖解決方案”。 我測試了兩個設備。 一個是Android 4.2.x版本,另一個是4.4.x版本。 一個人能夠以全屏模式播放視頻,另一個人無法播放。

在閱讀官方文檔“ 在Android 4.4中遷移到WebView ”后,我發現兩個設備中有不同的“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);

哦~~我可以睡覺...(抱歉我的英語不好)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM