Agrega la dependencia
Kotlin
implementation("androidx.media3:media3-ui:1.7.1")
Groovy
implementation "androidx.media3:media3-ui:1.7.1"
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 adjuntar y separar (pasando null
) instancias de Player
.
PlayerView
se puede usar para la reproducción de video, imagen y audio. Renderiza videos y subtítulos en el caso de la reproducción de videos, mapas de bits para la reproducción de imágenes y puede mostrar el 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"/>
El fragmento anterior ilustra 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 métodos setter correspondientes, que se pueden usar para personalizar la vista en el tiempo de ejecución. En la documentación de PlayerView
, se enumeran estos atributos y métodos setter con más detalle.
Para una experiencia del usuario más cómoda, considera agregar el atributo keepScreenOn
de Android o configurar un bloqueo de activación si usas ExoPlayer. Puedes investigar otras acciones que mantienen el dispositivo activo en las páginas de trabajo en segundo plano.
android:keepScreenOn="true"
Una vez que se declara la vista en el archivo de diseño, se puede buscar en el método onCreate
de la actividad:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView = findViewById(R.id.player_view) }
Java
@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
:
Kotlin
// 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()
Java
// 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
. Se puede personalizar configurando atributos en PlayerView
(que se pasarán a PlayerControlView
) o proporcionando un controlador personalizado con android:id="@id/exo_controller
.
Elige un tipo de superficie
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 qué tipo de superficie elegir en la página Superficie.