es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mantener la reproducción de video a pantalla completa en WebView después de la rotación en Android.

Cuando el usuario hace clic en el botón de pantalla completa en un video en un WebView, WebChromeClient llama a onShowCustomView con la vista personalizada del video. Utilizo esta devolución de llamada para agregar la vista al fragmento y mostrarla a pantalla completa.

Sin embargo, cuando roto el dispositivo, la actividad se destruye (como se esperaba) junto con la vista personalizada del video.

¿Cómo puedo hacer que el WebView muestre la vista personalizada del video después de la rotación (sin perder el estado actual del video, por ejemplo, reproduciendo/pausado y desplazamiento)? Después de llamar a restoreState con el estado guardado de la instancia del WebView, no invoca la devolución de llamada onShowCustomView de WebChromeClient y parece no recordar que el usuario estaba viendo un video. Incluso si de alguna manera guardara el video, ya no estaría conectado al WebView y hacer clic en el botón para salir de pantalla completa ya no activaría la devolución de llamada onHideCustomView de WebChromeClient.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para que WebView muestre la vista de video personalizada después de la rotación, puedes guardar el estado del reproductor de video (reproduciendo/pausado y posición) en el método onSaveInstanceState del fragmento. Cuando la actividad se recrea después de la rotación, puedes restaurar el estado del reproductor de video en el método onCreateView del fragmento utilizando el paquete de estado guardado.

    Para asegurarte de que la vista de video personalizada se crea de nuevo después de la rotación, puedes agregar una comprobación en el método onCreateView para ver si la vista de video personalizada se había agregado previamente al fragmento. Si lo estaba, puedes volver a agregarla al fragmento y mostrarla a pantalla completa.

    Si WebView no invoca el callback onShowCustomView de WebChromeClient después de llamar a restoreState con el estado guardado de WebView, puedes intentar llamar manualmente a onShowCustomView con la vista de video personalizada en el método onCreateView antes de restaurar el estado del reproductor de video. Esto debería provocar que WebView muestre la vista de video personalizada y restablezca su estado. Además, también puedes agregar una comprobación en el método onConfigurationChanged de la actividad para volver a agregar la vista de video personalizada al fragmento y mostrarla a pantalla completa si el dispositivo se rota mientras el video se está reproduciendo en modo de pantalla completa.

Comments are closed.