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

circle-info

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)arrow-up-right y Activity.onRestoreInstanceState(Bundle)arrow-up-right.

Audio

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

Por defecto, VideoView solicita el foco de audio con AudioManager#AUDIOFOCUS_GAINarrow-up-right. Para cambiar este comportamiento debe utilizar setAudioFocusRequest(int)arrow-up-right.

Los atributos de audio utilizados por defecto son AudioAttributes#USAGE_MEDIAarrow-up-right y AudioAttributes#CONTENT_TYPE_MOVIEarrow-up-right. Para modificarlos utilice setAudioAttributes(android.media.AudioAttributes)arrow-up-right.

USO DESDE XML

triangle-exclamation

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