android webview video标签,Android WebView支持html5 video标签
看到这个标题很兴奋了吧,但是内容肯定会让你失望。。。这先告诉结果了,我没在2.3上搞出什么名堂来。起因是项目需要在android 2.3.*的版本上调用有video标签的页面,调研是否支持。百度,google一大堆,首先确定的是2.3以上是对html有支持的,3.0以上支持的比较好,2.3.*系列貌似问题比较多。支持依据可以看看以下两个网站:3.0以上版本webview对html5的支持也是默认关
看到这个标题很兴奋了吧,但是内容肯定会让你失望。。。这先告诉结果了,我没在2.3上搞出什么名堂来。
起因是项目需要在android 2.3.*的版本上调用有video标签的页面,调研是否支持。百度,google一大堆,首先确定的是2.3以上是对html有支持的,3.0以上支持的比较好,2.3.*系列貌似问题比较多。支持依据可以看看以下两个网站:
3.0以上版本webview对html5的支持也是默认关闭的,需要一些设置,而官方文档对这个我只找到一句比较奇葩的说明:
HTML5 Video support In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set a WebChromeClient. For full screen support, implementations of onShowCustomView(View, WebChromeClient.CustomViewCallback) and onHideCustomView() are required, getVideoLoadingProgressView() is optional.
说的也算清楚,只要两步:1. 打开硬件加速(3.0以上版本支持)2. set一个WebChromClient
至于后面的都是对全屏的支持,这里就不渗入了,没那个需求。。关于WebViewClient与WebChromeClient是什么意思,有何区别,网上一捞一大把。
so, 我以4.2.2的sdk开发,代码如下:
public class MainActivity extends Activity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Log.d("javascript", "js function call");
webView.loadUrl("javascript:playVideo()");
}
});
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("http://****/html5/index.html");
}
} 其中有网上找来的实现autoplay的方法,即在页面中加入一段js代码:
function playVideo() {
var video = document.getElementById(".video");
video.play();
}
在webView加载完成后,调用的方法onPageFinished()中调用该js方法实现autoplay属性失效情况下的自动播放。
当然,在manifest文件中application标签上加了android:hardwareAccelerated="true"硬件加速的开启。
至此,在我GN 4.2的系统上,mp4格式的视频乖乖的播放了。
接下来,我去掉了硬件加速,跑在了2.3.3上,静悄悄,很不美好。。。。
总结:
1. 在2.3上没找到比较好的方法,有位大神封装的HTML5WebView,在googleCode上,试了一下在2.3上一部分视频格式是可以的,但是我看了源码对WebChromeClient的重写没发现特别的设置。
2. 3.0以上版本基本按照这个写法是可行的。各位看官如果有2.3上面的实现,安特一下我。。
更多推荐
所有评论(0)