我一直在處理這個問題至少一個星期。我已經閱讀了StackOverflow的所有文章,但我仍然沒有找到解決方案,我開始認爲這是不可能的。Android WebView html5視頻強制全屏
我想顯示在網頁視圖的HTML embebbed在這樣的佈局:
的問題是,如果HTML代碼中有一個HTML5視頻裏面會冒出由於錯誤在Android操作系統中:Link to bug。
我已經嘗試了很多解決方法,但沒有一個似乎在工作。我最後一次嘗試是在全屏顯示低於Jelly Bean的設備的視頻(他們已經修復了此版本的錯誤)。
我沒有任何控制HTML我必須顯示,所以我發現要做的事情的唯一方法是注入JavaScript代碼。現在,我正在處理onShowCustomView以使其全屏。
setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (android_sdk < JELLY_BEAN) {
detectVideoOnWebPage();
}
}
});
private void detectVideoOnWebPage() {
// Run javascript code that detects the video end and notifies the
// interface
String js = "javascript:";
js += "_ytrp_html5_video = document.getElementsByTagName('VIDEO')[0];";
js += "if (_ytrp_html5_video !== undefined) {";
{
js += "_ytrp_html5_video.webkitEnterFullScreen();";
js += "_VideoEnabledWebView.notifyVideoPresence();";
js += "function video_start_playing() {";
{
js += "_VideoPlayed.notifyVideoStarted();";
js += "ev.target.removeEventListener('playing', video_start_playing);";
}
js += "}";
js += "ev.target.addEventListener('playing', video_start);";
}
js += "} else if (document.getElementsByTagName('iframe')) {";
{
js += "_VideoEnabledWebView.notifyVideoPresence();";
}
js += "} else {";
{
js += "var handler = function(ev) {";
{
js += "if (ev.target.nodeName.toUpperCase() === \"VIDEO\".toUpperCase()) {";
{
js += "function video_start_playing() {";
{
js += "_VideoPlayed.notifyVideoStarted();";
js += "ev.target.webkitEnterFullScreen();";
}
js += "}";
js += "ev.target.addEventListener('play', video_start_playing);";
js += "_VideoDetected.notifyVideoPresence();";
js += "document.removeEventListener (\"DOMNodeInserted\", handler);";
}
js += "} else {";
{
js += "_ytrp_html5_video = document.getElementsByTagName('VIDEO')[0];";
js += "if (_ytrp_html5_video !== undefined) {";
{
js += "_VideoEnabledWebView.notifyVideoPresence();";
}
}
js += "};";
}
js += "};";
js += "document.addEventListener (\"DOMNodeInserted\", handler);";
}
js += "}";
loadUrl(js);
}
我的目標是:
- 檢測時HTML包含HTML5視頻。
- 對於低於Jelly Bean的OS版本,強制全屏。
現在,我已經達到:在HTML5視頻是不是一個iframe中比Ice Cream Sandwich的低版本,全屏模式
- 顯示(ICS忽略webkitEnterFullScreen)
我有企圖收集相關信息,以思考;這個問題是追逐「聖盃」的結果嗎? [x-platform dev] – ChiefTwoPencils
是的。爲了讓你知道我是多麼的絕望,我嘗試在全屏按鈕上模擬觸摸事件:) – Juangcg