在android WebView中启用HTML5视频播放



我正在构建一个简单的webview应用程序,该应用程序现在使用HTML5视频播放器显示一个充满短视频剪辑的网站。在默认的安卓网络浏览器中一切正常,但webview不会播放任何视频片段。

用于播放视频片段的Html代码如下:

<video poster preload="true" controls autoplay width="500" height="200">
  <source src="http://www.edmondvarga.com/demo/videos/video.mp4" type="video/mp4">
  </video>

主要活动.java:

package tscolari.mobile_sample;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class InfoSpotActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
        WebSettings webSettings = mainWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mainWebView.setWebViewClient(new MyCustomWebViewClient());
        mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        mainWebView.loadUrl("http://server.info-spot.net");
    }
    private class MyCustomWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}

如何在网络视图中启用视频播放?

我从之前的一个项目中知道,您需要使用WebChromeClient来播放HTML5视频。(这也为您提供了硬件加速支持,前提是您还可以设置活动的标志)。

用途:

        mainWebView.setWebChromeClient(new WebChromeClient());

在设置setWebViewClient之前,请先执行此操作。您可以覆盖WebChromeClient来拦截任何需要处理的事件。

在你的活动定义中的AndroidManifest.xml中,添加:

android:hardwareAccelerated="true"

以下引用来自这个SDK页面(向下滚动到HTML5视频支持)

为了在应用程序中支持内联HTML5视频,您需要打开硬件加速,并设置WebChromeClient。

据我所知,android webview有Chromium引擎,它不支持全屏模式下的HTML5视频(H.264)。你可以尝试播放视频,但视频会从屏幕上消失,并且在所有设备上都不一致。如果webview是应用程序的主要部分,那么最好切换到mozilla geckview,但它会为你的apk增加30到40 mb。

下面给出的html5标签适用于我,而不会更改android代码中的任何内容

<video src="video/placeholder.m4v" poster="video/placeholder.jpg" onclick="this.play();"/>

你可以在这里详细查看

信用:不规则脱落

我成功地使用以下代码使用html5视频标签显示视频:

mainWebView.setWebChromeClient(new WebChromeClient());
android:hardwareAccelerated="true"

最新更新