使用Android 4浏览器自动启动html5video

我想用android 4冰淇淋三明治浏览器自动启动android html5video。 我尝试了许多java-script函数和html5video的autobuffer autoplay标签。 但没有任何工作。 我通过Android应用程序在webview中启动android chrome客户端,该客户端应该能够自动启动video。 点击播放button时播放video,但不能自动播放。

它在Android中受到限制吗? 还有一点需要注意的是,即使我们点击播放button并且正在播放和完成video,chromeClient也不会调用callback方法。

我已经search了一下,发现在Android 4上没有这个问题的积极结果。

Solutions Collecting From Web of "使用Android 4浏览器自动启动html5video"

看起来,Android 4+改变了play()方法的要求,要求用户交互。 如果从用户事件处理程序(例如touchstartmousedown )中触发play() ,则只要在同一个事件循环中运行该video,就可以播放该video。

这意味着您不应该使用asynchronous触发器来调用play() ,而是在没有setTimeout()等的同一个事件处理函数中调用play,所以像延时播放这样的东西是不可能的。

一种方法是在iOS 4上使用与iOS相同的技巧 – 使用第一个用户交互事件来play()pause()video。 这将使video稍后进行操作,因为您在用户启动的操作过程中播放了该video。 在成功准备好video之后,无论是否在事件处理程序循环中调用,都可以在以后随时调用播放方法。

编辑:这是一个示例代码,适用于HTC和三星,但不是Galaxy Nexus 4.1(需要用户互动玩):

 var myVideo = document.getElementById('myvideo'); myVideo.addEventListener('canplay', function() { myVideo.play(); }); myVideo.load(); myVideo.play(); 

Android实际上有一个API! 方法是setMediaPlaybackRequiresUserGesture()。 我经过了很多挖掘video自动播放和大量的尝试黑客攻击后发现它。 这里有一个来自blair vanderhoof的例子:

 package com.example.myProject; import android.os.Bundle; import org.apache.cordova.*; import android.webkit.WebSettings; public class myProject extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html"); WebSettings ws = super.appView.getSettings(); ws.setMediaPlaybackRequiresUserGesture(false); } } 

适用于Android 4.4.4