4

私は Android と PhoneGap アプリケーションを使用しており、HTML5 ビデオ タグを使用して Web ページでビデオを再生しています。ビデオを再生すると、ビデオが表示されず、ビデオ自体が再生されません。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 に答える