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

  1. webview.setWebChromeClient(new WebChromeClient() {
  2. public void onShowCustomView(View view, CustomViewCallback callback) {
  3. Log.e("Media", "onShowCustomView ............ ");
  4. if (myCallback != null) {
  5. myCallback.onCustomViewHidden();
  6. myCallback = null ;
  7. Log.e("Media", "myCallback.onCustomViewHidden()...");
  8. return;
  9. }
  10. long id = Thread.currentThread().getId();
  11. ViewGroup parent = (ViewGroup) webview.getParent();
  12. String s = parent.getClass().getName();
  13. Log.v("WidgetChromeClient", "rong debug Ex: " + s);
  14. parent.removeView( webview);
  15. parent.addView(view);
  16. myView = view;
  17. myCallback = callback;
  18. }
  19. private View myView = null;
  20. private CustomViewCallback myCallback = null;
  21. public void onHideCustomView() {
  22. long id = Thread.currentThread().getId();
  23. Log.v("Media", "onrong debug in hideCustom Ex: " + id);
  24. if (myView != null) {
  25. if (myCallback != null) {
  26. myCallback.onCustomViewHidden();
  27. myCallback = null ;
  28. }
  29. ViewGroup parent = (ViewGroup) myView.getParent();
  30. parent.removeView( myView);
  31. parent.addView(webview);
  32. myView = null;
  33. }
  34. }
  35. });

这段代码网上很多地方能找到的,但这是实现全屏播放的前提,一旦触发全屏事件,系统就会调用onShowCustomView方法
实现自动播放功能,就是在网络加载完成后,再延时一些时间如1s后,执行这JAVA脚本

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

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

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

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

如果你想知道视频什么时候开始播放,就是得到视频开始播放事件,方法如下:
先在代码上定义这样接口

  1. private final class DemoJavaScriptInterface
  2. {
  3. DemoJavaScriptInterface(){}
  4. public void clickonAndroid(){
  5. Toast.makeText(getApplicationContext(), "视频开始播放...",Toast.LENGTH_SHORT).show();
  6. }
  7. public void endonAndroid(){
  8. Toast.makeText(getApplicationContext(), "视频结束",Toast.LENGTH_SHORT).show();
  9. }
  10. }
  1. webview.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

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

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

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

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

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

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

以上方法就是我在Android 网页视频一些心得,也许能给在你这方面开发提供帮助

最新文章

  1. 【Python实战】Scrapy豌豆荚应用市场爬虫
  2. 动画库Animate.css
  3. 7z命令行工具
  4. style="display"之后不能获取offsetHeight或clientWidth这类测量的值
  5. 编译安装lnmp
  6. char * 和 void *
  7. HDU 2520 我是菜鸟,我怕谁
  8. kbhit()的三个测试
  9. Linux常用命令及部分详解
  10. .net开源工作流引擎ccflow Pop返回值设置
  11. mysql安装-CentOS6下解压安装mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
  12. IdentityServer4【Introduction】之术语
  13. 多线程操作的方法(sleep,)setPriority(Thread.MIN_PRIORITY);yield();
  14. plsql连接远程oracle数据库
  15. python ros 重新设置机器人的位置
  16. Windows8连接网络后自动弹出Bing解决方法
  17. ios 重用UI部分代码的好方法(再也不用为局部变量的命名而烦恼啦!)
  18. Linux中断 - 驱动申请中断API
  19. Q:WCHAR转化为CHAR
  20. java反射基础知识(一)

热门文章

  1. 梦想3D控件 2018.7.26更新
  2. 学习笔记7——使用Scanner获取键盘输入
  3. 「 RQNOJ PID204 」 特种部队
  4. python lambda简易使用
  5. TestNG套件测试(二)
  6. 记VS2008安装及使用及卸载的艰辛历程!!!(2018/11/6-2018/11/14)
  7. Effective C++ 一些记录和思考
  8. 深入理解PHP之strpos
  9. (五)python3 整型int
  10. Navicat premium连接Oracle报ORA-12541错误