看到这个标题很兴奋了吧,但是内容肯定会让你失望。。。这先告诉结果了,我没在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上面的实现,安特一下我。。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐