15

我想使用android 4冰淇淋三明治瀏覽器自動啓動android html5視頻。我嘗試了很多java-script函數和html5視頻的autobuffer autoplay標籤。但沒有任何工作。我通過android應用程序在webview中啓動android chrome客戶端,該客戶端應該能夠自動啓動視頻。點擊播放按鈕時播放視頻但不播放。使用android 4瀏覽器自動啓動html5視頻

它在android中受到限制嗎? 要注意的另一件事是,即使當我們點擊播放按鈕&視頻正在播放&完成時,chromeClient中沒有調用回調方法。

我用Google搜索&沒有發現陽性結果在這個問題在Android 4

+0

這是否限制適用於Android版Chrome?謝謝 – 2015-05-19 13:12:37

回答

23

看來,Android的4+變化的要求爲play()方法需要用戶交互。如果您從用戶事件處理程序(例如,touchstartmousedown)中觸發play(),則只要您在同一個事件循環中運行視頻,就可以播放視頻。

這意味着你不應該使用異步觸發器來調用play(),而是在同一個事件處理程序中調用play而不用setTimeout()等等,所以像延時播放這樣的東西是不可能的。

一種方法是在Android 4上使用與iOS相同的技巧 - 使用第一個用戶交互事件play()pause()視頻。這會使視頻稍後進行操作,因爲您在用戶發起的操作中播放了該視頻。在您成功準備好視頻之後,無論是否在事件處理程序循環內進行調用,都可以在以後隨時調用播放方法。

編輯:下面是一個示例代碼,對HTC和三星的作品,而不是Galaxy Nexus的4.1(需要用戶交互播放):

var myVideo = document.getElementById('myvideo'); 

myVideo.addEventListener('canplay', function() { 
    myVideo.play(); 
}); 

myVideo.load(); 
myVideo.play(); 
+0

謝謝Krof。這是否意味着WebCromeClient中的所有回調方法(如onShowCustomView,onCompletion,onPrepared等)在播放時都不會針對視頻的各種事件調用?還有一件事是主視頻的意思是什麼。你有什麼教程或例子提及? – 2012-08-06 12:56:10

+1

_Primed_在這種情況下表示視頻已播放,這意味着視頻播放是由用戶觸發的,因此可用於播放。但不清楚你的意思是「WebChromeClient」。 – 2012-08-06 13:13:17

+0

Krof,正如您在Nexus 4.1中提到的,這不適用於Samsung S3和Tab 2.0設備,需要用戶交互。 – 2012-08-15 12:34:44

1

的Android實際上有一個API,這個!該方法是setMediaPlaybackRequiresUserGesture()。我經過大量挖掘視頻自動播放和大量來自SO的嘗試黑客之後發現它。下面是布萊爾德霍夫一個例子:

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

+0

我想這個問題是關於HTML5而不是科爾多瓦。 – vee 2016-12-05 05:35:47

相關問題