entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Por que en webview no se auto reproduce un video con la funcion de java onload

Por favor alguien me puede decir por que no se Autoreproduce un video en webview

la pagina tiene un codigo sencillo

<video id="video" controls autoplay>
<source src="video.mp4" type="video/mp4">
</video>
<script>
window.onload = function play() {
document.getElementById("video").play();
} 
</script>

En el webview esta activado javascript

webView.getSettings().setJavaScriptEnabled(true);

intente con diferentes codigos y no logro hacer la auto reproduccion.
es importante ya que la pagina cuando inicia lo primero que muestra es el video.

en los navegadores de escritorio funciona bien, y en android solo usando dolphin browser.

pero yo necesito que lo haga desde webview.

x4mp73r comentado May 27, 2016

Muestra también el código de la Activity donde está el WebView y cargas la url.

Leonardo-Tadei comentado May 27, 2016

Te funciona en Android con Chrome? El WebView se parece más al Chrome que a otros navegadores, y la prueba con Dolphin no es significativa

Federicobus comentado May 28, 2016

Hola Leonardo, No funciona en Chrome, Firefox, Opera solo en Dolphin.

Gracias por responder.

Federicobus comentado May 28, 2016

Este codigo que esta en el activity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fullscreen);
        WebView view = (WebView) this.findViewById(R.id.webView);
        view.setWebViewClient(new WebViewClient());
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl("http://127.0.0.1:8080");

        mVisible = true;
        mControlsView = findViewById(R.id.fullscreen_content_controls);
        mContentView = findViewById(R.id.fullscreen_content);

        // Set up the user interaction to manually show or hide the system UI.
        mContentView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                toggle();
            }
        });

        // Upon interacting with UI controls, delay any scheduled hide()
        // operations to prevent the jarring behavior of controls going away
        // while interacting with the UI.
    }

Espero puedan ayudarme ya estoy frustrado de tanto probar.

saludos

2 Respuestas

3votos

x4mp73r Puntos13320

Intenta agregar esto a tu webView:

 webview.setWebChromeClient(new WebChromeClient());
  webview.getSettings().setMediaPlaybackRequiresUserGesture(false);

Según, eso está pensado que soluciona el error para Android 4.4, pero aquí la cuestión es intentar.

Federicobus comentado May 30, 2016

@x4mp73r Resolvio mi problema, muchas gracias.

Funciona a partir de la version 3.1 en adelante tube que completar el codigo asi:

mWebView.setWebChromeClient(new WebChromeClient());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
}

copio codigo completo de mi activity por si alguin tiene el mismo problema.

import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    private WebView mWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) this.findViewById(R.id.webView);

        //activamos javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //forzar al webview para abra los enlaces internos dentro de la app
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.setWebChromeClient(new WebChromeClient());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
        }

        //URL que carga la app (webview)
        mWebView.loadUrl("http://127.0.0.1:8080");

    }
}

una vez mas gracias @x4mp73r y gracias @Leonardo-Tadei por intentar ayudarme tambien.

1voto

Leonardo-Tadei Puntos210010

Hola @Federicobus,

si el script no funciona en los navegadores más habituales, es, sin dudas, porque tiene algún error (que por algún motivo puntual es ignorado por Dolphin).

Revisá el script con el inspector de Firefox o Chrome para determinar el error y corregirlo: con eso debería funcionar luego en el WebView. Buscá errores en la Consola y también validá tu HTML en http://validator.w3.org para asegurarte de que estés generado código válido.

Si ponés por acá todo el código de esa página web o nos das un enlace para poder verla e inspeccionarla, seguro te podremos ayudar mejor...

Saludos cordiales!

Federicobus comentado May 29, 2016

Hola Leonardo.

En los navegadores mencionados en las PC de escritorio funcionan bien tal como yo quiero, el problema es a la hora de abrir en un movil con android.
de igual froma ya verfique http://validator.w3.org. y en el inspector y no encuentro nada raro.

habia mencionado lo de dolphin por que leì que andaba muy bien con las reproduciones de video y flash y la verdad es asi.

pero si dolphin pude hacerlo me imagino que deber haber algo màs para activar en android que no estoy encontrando.

te dejo el link de prueba de una reproducion para que veas que es algo sencillo.
prueba de video.

otra cosa mas, tambien probe agregando un boton que activara la reproducion del video con java y funcina bien. eso quiere decir que java si esta activado pero por alguna razon que desconozco no inicia la auto reproduccion.

gracias por ayudarme.

Leonardo-Tadei comentado May 29, 2016

Hola @Federicobus,

el enlace que nos enviás solo carga un IFRAME, que es en dónde está el video y el resto del contenido.

El IFRAME se llama index_index.php y está plagado de HTML mal formado (desde tener dos definiciones de tipo de documento en adelante: cargar varias veces los mismos JS, definir el documento como XHTML 1.0 que no soporta el tag VIDEO, etc).

Revisá que ese código esté bien generado como primer medida.

Federicobus comentado May 30, 2016

Hola Leonardo, Ya depure todo lo que notaste para ir descartando posibilidades
tanto probar se me fueron esos detalles.
si haces el intendo de abrir esta direccion con el movil o table veras que no se auto reproduce, mas alla de las correcciones en el codigo para limpiarlo.
pongo otro link de prueba diferente para que veas la diferencia y si notas algo mas.

Nuevo Link

Link Anterior

Agradezco muchisimo tu ayuda.

Leonardo-Tadei comentado May 30, 2016

Hola @Federicobus,

La versión nueva funciona bien en un móvil con FirefoxOS y en Firefox en Android, pero no en Chrome.

Lo único que veo, además de lo que sugiere @x4mp73r que no está demás probar, es que ejecutás el play() al cargar la página, pero no al cargar el video, y tal vez el play() falle porque el video no está cargado todavía.

El tag VIDEO tiene el atributo autoplay, que debería ser el medio para que reproduzca solo, en vez de llamar a play(). También tiene estados la carga del video (por separado de la página) que podrías consultar. Te dejo un enlace en dónde se explica todo esto.

También puede ser que el móvil bloquee la reproducción automática por cuestiones de "experiencia del usuario", en cuyo caso hay poco que hacer... a veces aspiramos a que las cosas funcionen en la mayoría de los escenarios y no en todos...

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta