为了解决 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 网页视频一些心得,也许能给在你这方面开发提供帮助

【转】Android HTML5 Video视频标签自动播放与自动全屏问题解决的更多相关文章

  1. HTML5 video 视频标签 常用属性

    最近在做手机端的 h5 页面的视频直播功能,用到了 Video 标签.其常用的属性有以下几个: src.poster.preload.autoplay.loop.controls.width.heig ...

  2. HTML5 video 视频标签全属性详解

    现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.Chrome),支持H.264的(Safari.IE ...

  3. iphone H5视频行内播放(禁止全屏播放)

    一般用户都知道,ios在网页点击视频播放时,视频会弹出全屏播放框. video标签的playsinline.webkit-playsinline标记根本就不会起作用. 还有传闻说对于没有声音的视频不会 ...

  4. 让所有浏览器支持HTML5 video视频标签

    HTML5究竟需要多少种视频编码格式 当前,video 元素支持三种视频格式:Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件MPEG4 = 带有 H.264 视频编 ...

  5. video视频标签一些设置,包括封面、播放结束后的封面、视频占满屏幕的方式、视频播放暂停、展示控制栏、触发全屏播放事件

    video视频标签一些设置,包括封面.播放结束后的封面.视频占满屏幕的方式.视频链接.视频播放暂停.展示控制栏.触发全屏播放事件 <video id="video" auto ...

  6. HTML video 视频标签全属性详解

    HTML 5 video 视频标签全属性详解   现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...

  7. HTML5 Video(视频)

    HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 HTML5 视频: 检测 Web站点上的视频 直到现在,仍然不存在一项旨在网页上显 ...

  8. HTML5: HTML5 Video(视频)

    ylbtech-HTML5: HTML5 Video(视频) 1.返回顶部 1. HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 ...

  9. HTML5中音频视频标签使用

    HTML5中音频视频标签使用的最好方式 Html5中提供了<audio> <vedio>元素实现音频视频的引入播放 然而更好的方式

随机推荐

  1. 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法

    import requests import re import json import time from bs4 import BeautifulSoup from pyquery import ...

  2. css3文字渐变无效果的解决方案

    现在css3越来月流行了,为了实现一些高大上的效果,我们会用一些渐变的特效,请看文字渐变的特效代码: .title { font-size: 60px; line-height: 80px; text ...

  3. HDU - 4810 - Wall Painting (位运算 + 数学)

    题意: 从给出的颜料中选出天数个,第一天选一个,第二天选二个... 例如:第二天从4个中选出两个,把这两个进行异或运算(xor)计入结果 对于每一天输出所有异或的和 $\sum_{i=1}^nC_{n ...

  4. linux环境下时间的查看和修改

    查看日期和时间date 查看时区date -R 查看UTC时间date -u 修改日期[root@centos ~]# date -s 20181230Sun Dec 30 00:00:00 EST ...

  5. Openstack manila的一些命令

    (本文是测试环境进行的操作:) 1.查看一些信息: [root@openstackcontroller ~]# manila type-list [root@openstackcontroller ~ ...

  6. Go:值类型、引用类型

    值类型,变量存的就是值本身: in系列t.float系列.bool.string.数组和struct 引用类型,变量存的是一个地址,这是地址存的才是值本身: 指针.slice.map.chan.int ...

  7. docker-ce安装官翻

    参考http://www.cnblogs.com/maple42/p/5868846.htmlhttp://blog.csdn.net/lizehua123/article/details/50601 ...

  8. Centos下Yum安装PHP5.5,5.6,7.0及扩展

    默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 ...

  9. Windows学习总结(9)——Windows系统常用的网络控制指令

    ping 命令式用来测试TCP/IP 网络是否畅通或者网络连接速度的命 令,其原理是根据计算机唯一标示的IP 地址,当用户给目的地址发 送一个数据包时,对方就会返回一个同样大小的数据包,根据返回的 数 ...

  10. UVALive 6510 Stickers

    Stickers Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Original ...