[英]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.