Cómo comenzar a usar la IU basada en objetos View

Agrega la dependencia

implementation("androidx.media3:media3-ui:1.6.0")
implementation "androidx.media3:media3-ui:1.6.0"

PlayerView

El componente más importante es PlayerView, una vista para la reproducción de contenido multimedia. PlayerView muestra videos, imágenes, subtítulos y la portada del álbum durante la reproducción, así como los controles de reproducción.

PlayerView tiene un método setPlayer() para conectar y desconectar (pasando null) instancias de Player.

PlayerView se puede usar para la reproducción de video, imagen y audio. Renderiza el video y los subtítulos en el caso de la reproducción de video, los mapas de bits para la reproducción de imágenes y puede mostrar material gráfico incluido como metadatos en los archivos de audio. Puedes incluirlo en tus archivos de diseño como cualquier otro componente de la IU. Por ejemplo, se puede incluir un PlayerView con el siguiente XML:

<androidx.media3.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

En el fragmento anterior, se muestra que PlayerView proporciona varios atributos. Estos atributos se pueden usar para personalizar el comportamiento de la vista, así como su apariencia. La mayoría de estos atributos tienen los métodos set correspondientes, que se pueden usar para personalizar la vista durante el tiempo de ejecución. En la documentación de PlayerView, se enumeran estos atributos y métodos set en más detalle.

Una vez que se declara la vista en el archivo de diseño, se puede buscar en el método onCreate de la actividad:

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

Cuando se inicializa un reproductor, se puede adjuntar a la vista llamando a setPlayer:

// Instantiate the player.
val player = ExoPlayer.Builder(context).build()
// Attach player to the view.
playerView.player = player
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()
// Instantiate the player.
player = new ExoPlayer.Builder(context).build();
// Attach player to the view.
playerView.setPlayer(player);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();

PlayerControlView

PlayerControlView es una de las subvistas de PlayerView que contiene la barra de progreso y los botones para controlar la reproducción. Ten en cuenta que PlayerControlView no está diseñado para usarse como un componente independiente fuera de PlayerView. Para personalizarlo, configura atributos en PlayerView (que se pasarán a PlayerControlView) o proporciona un controlador personalizado con android:id="@id/exo_controller.

Elige un tipo de plataforma

El atributo surface_type de PlayerView te permite establecer el tipo de superficie que se usa para la reproducción de video. Los valores permitidos son surface_view, texture_view, spherical_gl_surface_view (que es un valor especial para la reproducción de video esférico), video_decoder_gl_surface_view (que es para la renderización de video con renderizadores de extensión) y none (solo para la reproducción de audio). Puedes encontrar más información sobre el tipo de plataforma que debes elegir en la página Plataformas.