VideoView

Explicación del concepto de VideoView.

Fuente: developer.android

DEFINICIÓN

Hereda de SurfaceView.

Reproduce un archivo de video.

  • Una VideoView puede reproducir videos desde varias fuentes, desde resources hasta content providers.

  • Se encarga de controlar el tamaño del video, por lo que puede ser utilizada en cualquier tipo de layout.

  • Además ofrece opciones como escalado y tinte.

Información técnica

Esta información aparece en el enlace de arriba como información util.

En esta guía no la vamos a utilizar, sin embargo, se la dejo traducida para facilitarle la vida.

Estado

Una VideoView no mantiene su estado cuando pasa a segundo plano, en particular no almacena:

  • Posición de la reproducción actual.

  • Estado de la reproducción actual.

  • Pistas seleccionadas.

  • Subtitulos añadidos.

Las aplicaciones deben almacenar y luego recuperar estos datos en su propia Activity.onSaveInstanceState(Bundle) y Activity.onRestoreInstanceState(Bundle).

Audio

Tambien hay que tener en cuenta que el id de la sesión de audio (que se obtiene con getAudioSessionId()) puede cambiar después de restaurar el VideoView.

Por defecto, VideoView solicita el foco de audio con AudioManager#AUDIOFOCUS_GAIN. Para cambiar este comportamiento debe utilizar setAudioFocusRequest(int).

Los atributos de audio utilizados por defecto son AudioAttributes#USAGE_MEDIA y AudioAttributes#CONTENT_TYPE_MOVIE. Para modificarlos utilice setAudioAttributes(android.media.AudioAttributes).

USO DESDE XML

CONFIGURACIÓN

Vamos a diferenciar la configuración entre la reproducción de un video local y uno online.

Video Online

Solicitar permiso de Internet

En primer lugar se debe ir al AndroidManifest.xml y solicitar permisos para el uso de Internet. Esto se hace con la siguiente línea de código:

Código en kotlin

Después de eso hay que realizar varios pasos en MainActivity.kt, concretamente dentro del OnCreate:

  • Primero creo una variable del tipo VideoView y la relaciono con el id de mi View:

  • Después creo una instancia de la clase MediaController() con el contexto definido en su constructor:

  • Ahora relacionamos nuestro MediaController con nuestra View y viceversa:

  • Por último le indicamos a nuestra VideoView el recurso que queremos reproducir:

Video Local

Para reproducir un recurso local los pasos son los mismos, lo único que cambia es el VideoPath del final:

CODIGO

Con todo hecho, el código nos quedaría de la siguiente manera:

Last updated