【转】Android HTML5 Video视频标签自动播放与自动全屏问题解决
为了解决 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 网页视频一些心得,也许能给在你这方面开发提供帮助
【转】Android HTML5 Video视频标签自动播放与自动全屏问题解决的更多相关文章
- HTML5 video 视频标签 常用属性
最近在做手机端的 h5 页面的视频直播功能,用到了 Video 标签.其常用的属性有以下几个: src.poster.preload.autoplay.loop.controls.width.heig ...
- HTML5 video 视频标签全属性详解
现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.Chrome),支持H.264的(Safari.IE ...
- iphone H5视频行内播放(禁止全屏播放)
一般用户都知道,ios在网页点击视频播放时,视频会弹出全屏播放框. video标签的playsinline.webkit-playsinline标记根本就不会起作用. 还有传闻说对于没有声音的视频不会 ...
- 让所有浏览器支持HTML5 video视频标签
HTML5究竟需要多少种视频编码格式 当前,video 元素支持三种视频格式:Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件MPEG4 = 带有 H.264 视频编 ...
- video视频标签一些设置,包括封面、播放结束后的封面、视频占满屏幕的方式、视频播放暂停、展示控制栏、触发全屏播放事件
video视频标签一些设置,包括封面.播放结束后的封面.视频占满屏幕的方式.视频链接.视频播放暂停.展示控制栏.触发全屏播放事件 <video id="video" auto ...
- HTML video 视频标签全属性详解
HTML 5 video 视频标签全属性详解 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...
- HTML5 Video(视频)
HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 HTML5 视频: 检测 Web站点上的视频 直到现在,仍然不存在一项旨在网页上显 ...
- HTML5: HTML5 Video(视频)
ylbtech-HTML5: HTML5 Video(视频) 1.返回顶部 1. HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 ...
- HTML5中音频视频标签使用
HTML5中音频视频标签使用的最好方式 Html5中提供了<audio> <vedio>元素实现音频视频的引入播放 然而更好的方式
随机推荐
- dom4j使用方法详解
本文先做知识点的简单介绍,最后附完整案例. 一.解析XML文件 public class Foo { //url为XML文档地址 //自己封装了一个工具类 返回解析完成的document public ...
- cgroup代码浅析(2)
info include/linux/memcontrol.h memcg相关的函数 数据结构 mem_cgroup在每个node下,都有一个lruvec, 这个lruvec保存在mem_cgroup ...
- enote笔记语言(5)——其他(ver0.2)
章节:其他 ((主:单词)) 用来醒目地强调这个句子中哪个词语作主语 sentence: ...
- Luogu P3110 [USACO14DEC]驮运Piggy Back
解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$ ...
- Flask项目中整合各组件
一.介绍 主要介绍flask_sqlalchemy.flask_script.flask_migrate这三个组件该如何整合到flask项目中,以及如何使用. # 安装组件 pip3 install ...
- c# 缓存!
做项目的时候获取所有城市的时候,发现每次去获取都花费了很多时间,所以用缓存方法让效率更高! 这是我做的例子,如下: public class CacheGetCity { /// <summar ...
- 校长的收藏(洛谷 U4534)
题目背景 XS中学的校长喜欢收集手办,家里面都是价值不菲的手办. 校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加. 现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下. ...
- hdu_1024_糖果大战_201404021640
糖果大战 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 洛谷—— P3811 【模板】乘法逆元
https://www.luogu.org/problem/show?pid=3811 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式 ...
- Ubuntu 16.04中CPU轮流100%的问题解决
刚装好Ubuntu 16.04,但是观察各个CPU都是轮流100%,如图所示: