15

का उपयोग कर ऑटोस्टार्ट एचटीएमएल 5 वीडियो मैं एंड्रॉइड 4 आइसक्रीम सैंडविच ब्राउज़र का उपयोग कर एंड्रॉइड एचटीएमएल 5 वीडियो ऑटो-स्टार्ट करना चाहता हूं। मैंने HTML5 वीडियो के कई जावा-स्क्रिप्ट फ़ंक्शंस और ऑटोबफर ऑटोप्ले टैग की कोशिश की। लेकिन कुछ भी काम नहीं किया। मैं एंड्रॉइड क्रोम क्लाइंट को एंड्रॉइड ऐप के माध्यम से वेबव्यू में शुरू करता हूं और वह क्लाइंट वीडियो को स्वत: शुरू करने में सक्षम होना चाहिए। प्ले बटन वीडियो नाटक पर क्लिक करें, लेकिन ऑटो प्ले नहीं।एंड्रॉइड 4 ब्राउज़र

क्या यह एंड्रॉइड में प्रतिबंधित है? ध्यान देने योग्य अन्य बात यह है कि क्रोम क्लाइंट में कोई कॉल बैक विधियों को कॉल नहीं किया जाता है, भले ही हम प्ले बटन & वीडियो पर क्लिक कर रहे हैं & पूरा हो रहा है।

मैं googled है & एंड्रॉयड 4.

+0

पर

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 पर Chrome पर लागू होता है है: यहाँ ब्लेयर Vanderhoof से एक उदाहरण है? धन्यवाद –

उत्तर

23

पर इस मुद्दे पर कोई सकारात्मक परिणाम नहीं मिला ऐसा लगता है कि Android 4+ उपयोगकर्ता संपर्क की आवश्यकता के लिए play() विधि के लिए आवश्यकताओं को बदल दिया है। यदि आप उपयोगकर्ता ईवेंट हैंडलर (उदाहरण के लिए touchstart या mousedown) के भीतर से play() को ट्रिगर करते हैं, तो आप तब तक वीडियो चला सकते हैं जब तक आप इसे उसी ईवेंट लूप के अंदर चलाते हैं।

इसका मतलब है कि आपको play() पर कॉल करने के लिए एसिंक ट्रिगर्स का उपयोग नहीं करना चाहिए, बल्कि setTimeout() के बिना उसी ईवेंट हैंडलर के अंदर खेलने के लिए कॉल करें और ऐसे में, समय-देरी वाले खेल जैसी चीजें प्रश्न से बाहर हैं।

आईओएस में एंड्रॉइड 4 पर एक ही चाल का उपयोग करना एक तरीका है - पहले उपयोगकर्ता इंटरैक्शन ईवेंट का उपयोग play() और pause() वीडियो पर करें। यह बाद में मैनिपुलेशन के लिए वीडियो को सक्षम करेगा, क्योंकि आपने इसे उपयोगकर्ता द्वारा शुरू की गई कार्रवाई के दौरान खेला था। वीडियो सफलतापूर्वक प्राथमिकता प्राप्त करने के बाद, आप किसी भी समय प्ले विधियों को कॉल कर सकते हैं, भले ही कॉल ईवेंट हैंडलर लूप के अंदर किया गया हो या नहीं।

संपादित करें: यहाँ एक नमूना कोड है कि एचटीसी और सैमसंग पर काम करता है, लेकिन नहीं गैलेक्सी नेक्सस 4.1 (खेलने के लिए उपयोगकर्ता संपर्क की आवश्यकता है):

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

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

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

धन्यवाद क्रॉफ। क्या इसका मतलब यह है कि WebCromeClient पर ऑनशोक्स्टव्यू, ऑन कॉम्प्लेशन, ऑनपेरेड इत्यादि जैसी सभी कॉलबैक विधियों को वीडियो के दौरान विभिन्न कार्यक्रमों के लिए बुलाया नहीं जा रहा है? एक और बात यह है कि वीडियो के प्रमुख द्वारा इसका क्या अर्थ है। क्या आपके उल्लेख पर कोई ट्यूटोरियल या उदाहरण है? इस मामले में –

+1

_Primed_ का अर्थ है कि पहले से ही वीडियो चलाया गया है, जिसका अर्थ है कि वीडियो प्ले उपयोगकर्ता द्वारा ट्रिगर किया गया था और इसलिए खेल के लिए उपलब्ध है। सुनिश्चित नहीं है कि "WebChromeClient" से आपका क्या मतलब है। –

+0

क्रॉफ, यह सैमसंग एस 3 और टैब 2.0 डिवाइस पर काम नहीं करेगा जैसा कि आपने नेक्सस 4.1 में उल्लेख किया है, उपयोगकर्ता इंटरैक्शन की आवश्यकता है। –

1

एंड्रॉयड वास्तव में इस के लिए एक API है! विधि सेट है MediaPlaybackRequiresUserGesture()। मैंने इसे वीडियो ऑटोप्ले में खोदने और एसओ से बहुत से प्रयास किए गए हैक के बाद पाया। एंड्रॉयड 4.4.4

+0

मुझे लगता है कि यह प्रश्न HTML5 के बारे में कॉर्डोवा नहीं है। – vee

संबंधित मुद्दे