1

因此,我的总体情况如下:我必须从 wordpress 数据库中获取一些 HTML 并将其呈现在 webview 上。

所以我不能使用 youtube API,我必须渲染这个 HTML,我在上面嵌入了视频,我需要它们全屏弹出。此解决方案视频不在全屏模式下播放不适用于 API 10。

有没有办法让嵌入的视频在 API 11 以下全屏播放?

4

1 回答 1

2

您可以在 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 元素的坐标并放置VideoViewFrameLayout不要忘记在 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  
    }
于 2013-11-15T14:18:44.760 回答