android webview 播放 video经验总结
在目前PC浏览器上,对video的支持基本都没什么问题了。但是如果用webview去跑这样的页面就会遇到许多问题。
下面一段html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 </head> 5 <body onload="test()"> 6 <video id="video01" autoplay="autoplay"> 7 <source src="mov_bbb.mp4" type="video/mp4" /> 8 <p>no support text</p> 9 </video> 10 </body> 11 <script> 12 13 function test() { 14 var video01 = document.getElementById("video01"); 15 video01.preload = "auto"; 16 video01.autoplay = true; 17 video01.loop = true; 18 } 19 </script> 20 </html>
用js控制视频的自动播放,循环播放等特性,在PC上都没啥问题。但是如果用webview去装载的话,自动播放和循环播放可能用不了。
在android的webview上autoplay自动播放这个特性支持跟设备有关系,和android的版本号没关系(这个试过的)。并且大多数设备都是不能自动播放的。并且loop这个特性也基本上是不支持的。
如果在页面上自己添加一个按钮,通过点击按钮来调用video.play()方法,能不能播放呢。
<div> <button id="playBtn01">play</button> </div>
js代码
var playBtn01 = document.getElementById("playBtn01"); playBtn01.addEventListener("click", function() { video01.play(); });
这样是可以正常播放的。
于是便会想到能不能在某个特定的时候(例如某个事件发生,或者定时器时间到)调用video.play()方法让其自动播放呢?
修改一下代码
1 function test() { 2 3 var video01 = document.getElementById("video01"); 4 var timer = null; 5 var playing = false; 6 7 video01.addEventListener("playing", function() { 8 playing = true; 9 }); 10 11 timer = setInterval(playInterval, 1000); 12 13 14 function playInterval() { 15 if (playing === false) { 16 video01.play(); 17 } else { 18 if (timer !== null) { 19 clearInterval(timer); 20 } 21 } 22 } 23 }
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //...... view.loadUrl("javascript:onPageFinished();"); }
在js端
function onPageFinished() { console.log("page -- onPageFinished"); //在这里调用video.play播放便可以了 var video01 = document.getElementById("video01"); video01.play(); }
这样便可以自动播放了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。