4

我正在使用 Android 和 PhoneGap 应用程序,并且正在使用 HTML5 视频标签在我的网页上播放视频。当我播放视频时,视频不可见,视频本身也无法播放。如何在 Android 上播放 HTML5 视频?

下面给出的相同代码

<!DOCTYPE HTML>
<html>
    <head>
    <script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script>
        <meta http-equiv="content-type" content="text/html; charset=">
        <title></title>
    </head>
    <body >


        <video id="video" autobuffer height="240" width="360" onclick="this.play();>
<source src="test.mp4">
<source src="test.mp4" type="video/webm">
<source src="test.mp4" type="video/ogg">
</video>

        <div id="msg"></div>

<script type="text/javascript">

</script>

    </body>
</html>

和活动类 onCreate 方法-->>

public void onCreate(Bundle savedInstanceState) {            
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WebView webView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 

        webView.getSettings().setJavaScriptEnabled(true);

        webSettings.setBuiltInZoomControls(true);
        webSettings.setPluginState(PluginState.ON);

        webView.getSettings().setPluginsEnabled(true);
        webSettings.setAllowFileAccess(true);

        webView.loadUrl("file:///android_asset/www/html5videoEvents.html");      
}
4

2 回答 2

3

在将 HTML 内容加载到 WebView 之前添加这些行。

wv.setWebChromeClient(new WebChromeClient() {
});

从文档中:

为了在您的应用程序中支持内联 HTML5 视频,您需要打开硬件加速,并设置 WebChromeClient。对于全屏支持,需要实现 onShowCustomView(View, WebChromeClient.CustomViewCallback) 和 onHideCustomView(),getVideoLoadingProgressView() 是可选的。

于 2016-06-22T06:52:18.223 回答
0

尝试这个。

MainActivity.java

public class MainActivity extends Activity {

    WebView webPage;
    Button next;
    String rootDir = "file://" + Environment.getExternalStorageDirectory()
            + "/iR-unzip/testbook/";
    WebChromeClient webChromeClient = new WebChromeClient();
    WebViewClient webViewClient = new WebViewClient();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webPage = (WebView) findViewById(R.id.webview);
        webPage.setWebChromeClient(webChromeClient);
        webPage.setWebViewClient(new MyWebViewClient());
        webPage.getSettings().setJavaScriptEnabled(true);
        webPage.getSettings().setPluginsEnabled(true);
        //webPage.getSettings().setPluginState(PluginState.ON);
        webPage.getSettings().setLoadWithOverviewMode(true);
        webPage.getSettings().setUseWideViewPort(true);

        webPage.loadUrl(rootDir + "/" + "chapter_1.html");
        next = (Button) findViewById(R.id.page_changer);
        next.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                webPage.loadUrl(rootDir + "/" + "chapter_2.html");
            }
        });

    }

    public class MyWebChromeClient extends WebChromeClient {

        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            // TODO Auto-generated method stub
            super.onShowCustomView(view, callback);
            if (view instanceof FrameLayout) {
                FrameLayout frame = (FrameLayout) view;
                if (frame.getFocusedChild() instanceof VideoView) {
                    VideoView video = (VideoView) frame.getFocusedChild();
                    frame.removeView(video);
                    video.start();
                }
            }

        }
    }

    public class MyWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}
于 2012-10-29T04:43:07.237 回答