如何在Android的webview上打开嵌入式视频在API 11下全屏打开?

时间:2013-11-14 16:05:27

标签: android webview youtube

所以,我的整体情况如下:我必须从wordpress数据库中获取一些HTML并在webview上呈现它。

所以我无法使用youtube API,我必须渲染这个HTML,生病已嵌入视频,我需要它们全屏弹出。此解决方案Videos not playing in fullscreen mode无法在API 10上运行。

是否有任何方法可以让嵌入式视频在API 11下全屏播放?

1 个答案:

答案 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