因此,我的总体情况如下:我必须从 wordpress 数据库中获取一些 HTML 并将其呈现在 webview 上。
所以我不能使用 youtube API,我必须渲染这个 HTML,我在上面嵌入了视频,我需要它们全屏弹出。此解决方案视频不在全屏模式下播放不适用于 API 10。
有没有办法让嵌入的视频在 API 11 以下全屏播放?
因此,我的总体情况如下:我必须从 wordpress 数据库中获取一些 HTML 并将其呈现在 webview 上。
所以我不能使用 youtube API,我必须渲染这个 HTML,我在上面嵌入了视频,我需要它们全屏弹出。此解决方案视频不在全屏模式下播放不适用于 API 10。
有没有办法让嵌入的视频在 API 11 以下全屏播放?
您可以在 WebView 上方创建 Frame 布局并将其附加到 VideoView。这样您可以管理大小,添加自定义 MediaControl,但工作量很大,您将面临很多问题。
编辑:您可以通过以下方式捕获事件:
如果你可以处理 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
您的活动附加到 webview:
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 中启用 js wv.getSettings().setJavaScriptEnabled(true); before using javascript in webview
):
wv.loadUrl("javascript: jsInitMedia()"); // call js method jsInitMedia
html 中的 jsInitMedia(或者您可以直接在 WebView 中将此代码应用为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
:
@JavascriptInterface
public void init(final String json) {
Log.d(LOG_TAG, "Init:" + json);
// parse json and extract left, top, width and height
// now you can place any View with corresponding coords on your frame
//as well you can easy handle all click events
}