15

Quiero iniciar automáticamente el video html5 de android usando el navegador de sandwiches android 4 ice cream. Probé muchas funciones de script java y etiquetas autoplay de reproducción automática de video html5. Pero nada funcionó. Comienzo el cliente de Android Chrome en la vista web a través de la aplicación de Android y ese cliente debería poder iniciar automáticamente el video. Al hacer clic en el botón de reproducción, se reproduce el video, pero no la reproducción automática.Autostart html5 video usando android 4 browser

¿Está restringido en android? Otra cosa para notar es que no se llaman métodos de devolución de llamada en chromeClient incluso cuando hacemos clic en el botón de reproducción & se está reproduciendo el video & completado.

He buscado en Google & encontró ningún resultado positivo en este tema en Android 4.

+0

¿Tiene esta restricción se aplica a Chrome en Android? Gracias –

Respuesta

23

Parece que Android 4+ cambió los requisitos para el método play() para requerir la interacción del usuario. Si activa play() desde un controlador de eventos de usuario (por ejemplo, touchstart o mousedown), puede reproducir el video siempre que lo ejecute dentro del mismo bucle de evento.

Esto significa que no se debe utilizar asíncrono desencadena llamar play(), sino más bien llamar al juego dentro del mismo controlador de eventos sin setTimeout() y tal, así que cosas como jugar con retardo de tiempo está fuera de la cuestión.

Una forma es usar el mismo truco en Android 4 que en iOS: use el primer evento de interacción del usuario para play() y pause() el video. Esto permitirá que el video sea manipulado más tarde, ya que lo jugaste durante una acción iniciada por el usuario. Una vez que haya preparado correctamente el video, puede llamar a los métodos de reproducción en cualquier momento posterior, independientemente de si la llamada se realizó dentro del bucle del controlador de eventos o no.

EDIT: Aquí hay un código de ejemplo que funciona en HTC y Samsung, pero no Nexus Galaxy 4.1 (requiere la interacción del usuario para jugar):

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

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

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

Gracias Krof. ¿Eso significa que no se están convocando todos los métodos de devolución de llamada como onShowCustomView, onCompletion, onPrepared, etc. en WebCromeClient para los diversos eventos del video mientras se está reproduciendo? Una cosa más ¿Qué significa al principio el video? ¿Hay algún tutorial o ejemplo sobre lo que mencionas? –

+1

_Primed_ en este caso significa video ya reproducido, lo que implica que la reproducción de video fue activada por el usuario y, por lo tanto, está disponible para reproducir. Sin embargo, no estoy seguro de lo que quiere decir con "WebChromeClient". –

+0

Krof, esto no funcionará en los dispositivos Samsung S3 y Tab 2.0 como mencionó en Nexus 4.1, se necesita la interacción del usuario. –

1

Android en realidad tiene una API para esto! El método es setMediaPlaybackRequiresUserGesture(). Lo encontré después de investigar mucho autoplay de video y muchos intentos de hack de SO. He aquí un ejemplo de 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); 
    } 
} 

trabajos en Android 4.4.4

+0

Creo que esta pregunta es sobre HTML5 no Córdova. – vee