所以,我的整体情况如下:我必须从wordpress数据库中获取一些HTML并在webview上呈现它。
所以我无法使用youtube API,我必须渲染这个HTML,生病已嵌入视频,我需要它们全屏弹出。此解决方案Videos not playing in fullscreen mode无法在API 10上运行。
是否有任何方法可以让嵌入式视频在API 11下全屏播放?
答案 0 :(得分:2)
您可以在WebView上方创建框架布局并将其附加到VideoView上。这样您就可以管理大小,添加自定义MediaControls,但是有很多工作,您将面临许多问题。
编辑:您可以按以下方式捕获事件:
如果你能处理html,你可以添加JS方法,通过JS桥来调用你的应用程序方法。例如,您使用onclick
事件放置了一个图像。点击此图片,在您的应用中调用JsVideFrameCallbackImpl.playVideo('videoUrl')
(http://android-developers.blogspot.com/2008/09/using-webviews.html):
<img src="img/video_1.jpg" width="494px" height="340px" onclick="javascript: JsVideFrameCallbackImpl.playVideo('videoUrl')">
并将您的活动中的addJavascriptInterface
附加到网络浏览:
wv.addJavascriptInterface(new JsVideFrameCallbackImpl(), "JsVideFrameCallbackImpl");
//....
private final class JsVideFrameCallbackImpl {
private final static String LOG_TAG = "JsVideFrameCallbackImpl";
@SuppressWarnings("unused")
@JavascriptInterface
public void playVideo(final String videoUri) {
// call VideoPlayer activity as example
startActivity(new Intent(context, VideoPlayer.class));
}
}
或者您可以通过相同的js-bridge获取页面上任何html元素的坐标,并将VideoView
放在FrameLayout
上(不要忘记在webview {{1}中启用js }):
wv.getSettings().setJavaScriptEnabled(true); before using javascript in webview
html中的jsInitMedia(或者您可以直接在WebView中将此代码应用为: wv.loadUrl("javascript: jsInitMedia()"); // call js method jsInitMedia
:
wv.loadUrl("javascript: var el = document.getElemen...")
以及 function jsInitMedia() {
var el = document.getElementById(dataArray[i]); var coords = el.getBoundingClientRect();
// get top, left coords, width and height with coords.width, el.offsetTop and so on. Send them back as string (i use json format)
JsVideFrameCallbackImpl.init(jsonDataWithCoordsAsString);
}
中的java代码:
JsVideFrameCallbackImpl