您的位置:首页 > 移动开发 > Android开发

Android HTML5 Video视频标签自动播放与自动全屏问题解决

2013-07-28 00:16 1076 查看
为了解决 HTML5Video视频标签自动播放与全屏问题,在网上找了很多相关资料,网上也很多关于此问题解决方法,但几乎都不能解决问题,特别对各大视频网站传回来的html5网页视频自动播放与全屏问题,我是这样解决的:

webview.setWebChromeClient(new WebChromeClient() {

public void onShowCustomView(View view, CustomViewCallback callback) {
Log.e("Media", "onShowCustomView ............ ");

if (myCallback != null) {
myCallback.onCustomViewHidden();
myCallback = null ;
Log.e("Media", "myCallback.onCustomViewHidden()...");
return;
}

long id = Thread.currentThread().getId();

ViewGroup parent = (ViewGroup) webview.getParent();
String s = parent.getClass().getName();
Log.v("WidgetChromeClient", "rong debug Ex: " + s);
parent.removeView( webview);
parent.addView(view);
myView = view;
myCallback = callback;

}

private View myView = null;
private CustomViewCallback myCallback = null;

public void onHideCustomView() {

long id = Thread.currentThread().getId();
Log.v("Media", "onrong debug in hideCustom Ex: " + id);

if (myView != null) {

if (myCallback != null) {
myCallback.onCustomViewHidden();
myCallback = null ;
}

ViewGroup parent = (ViewGroup) myView.getParent();
parent.removeView( myView);
parent.addView(webview);
myView = null;
}
}

});


这段代码网上很多地方能找到的,但这是实现全屏播放的前提,一旦触发全屏事件,系统就会调用onShowCustomView方法

实现自动播放功能,就是在网络加载完成后,再延时一些时间如1s后,执行这JAVA脚本

String js="javascript: var v=document.getElementsByTagName('video')[0]; "
+"v.play(); ";
webview.loadUrl(js);


这样就可以自动开始播放了

要实现让它自动全屏播放,可以执行这JAVA脚本:

String js="javascript: var v=document.getElementsByTagName('video')[0]; "+"v.webkitEnterFullscreen(); ";
webview.loadUrl(js);


注意实现全屏播放要在视频开始播放后,才能调用,否则可能会现异常

如果你想知道视频什么时候开始播放,就是得到视频开始播放事件,方法如下:

先在代码上定义这样接口

private final class DemoJavaScriptInterface
{
DemoJavaScriptInterface(){}

public void clickonAndroid(){

Toast.makeText(getApplicationContext(), "视频开始播放...",Toast.LENGTH_SHORT).show();

}
public void endonAndroid(){

Toast.makeText(getApplicationContext(), "视频结束",Toast.LENGTH_SHORT).show();

}
}


webview.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");


然后在在视频开始播放之前,执行这JAVA脚本

String js="javascript: var v=document.getElementsByTagName('video')[0]; "
+"v.addEventListener('playing', function() { window.demo.clickonAndroid(); }, true); ";
webview.loadUrl(js);


当然了你也可以得到视频播放结束事件执行这JAVA脚本

String js="javascript: var v=document.getElementsByTagName('video')[0]; "
+"v.addEventListener('ended', function() { window.demo.endonAndroid(); }, true); ";
webview.loadUrl(js);


一般在android平台上,网络视频网站可能不会给你传回Html5 Video网页,这时候就可以设置UserAgent,如可能设置成IPhone或IPad环境,让它返回tml5 Video网页

webview.getSettings().setUserAgentString("Mozilla/5.0 (iPad; CPU OS 5_1 " +
"like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 " +
"Mobile/9B176 Safari/7534.48.3");


以上方法就是我在Android 网页视频一些心得,也许能给在你这方面开发提供帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐