$ webview html5 自动播放视频 $

来源:互联网 发布:矩阵音频口 编辑:程序博客网 时间:2024/05/19 12:13
/**
* @author wilber
* @src http://blog.csdn.net/wilber46
* @target 4.1
* @requirements:载入html5网页自动播放视频
* <---| android webview html5 video autoplay |--->
*/

参考http://www.longtailvideo.com/html5/autoloop/发现html5 视频的autoplay根本没实现,查看了下android 源码HTMLVideoElement.cpp也未见相应处理,网上有资料显示,这可能关乎UI线程与后台线程的协调性,我看,以后的升级版本总会解决这个问题的。


html5标签属性不支持,那只有通过javascript来处理了
video.html :
<body>
<video id="video" src="b.mp4" width="480" height="320" controls loop>
don't support html5
</video>
</body>
<script type="text/javascript">
var video = document.getElementById("video");
video.play();
</script>
可是这样让浏览器自动解析还是不能自动播放。Android提供了JavascriptInterface可以使html与Android本地代码交互,这里我们只需要调用javascript中的函数就可以了,使用:
view.loadUrl("javascript:try{autoplay();}catch(e){}");

这里我们改下video.html中的javascript
<script type="text/javascript">
function autoplay() {
var video = document.getElementById("video");
video.play();
}
</script>

我们在设置的WebViewClient中覆盖方法:
@Override
public void onPageFinished( WebView view, String url) {
view.loadUrl("javascript:try{autoplay();}catch(e){}");
}


在设置的WebChromeClient覆盖方法:

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
}


不要忘记了webview.getSettings().settings.setJavaScriptEnabled(true)启用javascript,AndroidManifest加入INTERNET权限

源码附件:http://download.csdn.net/detail/wilber46/4721851