Premiers pas avec l'UI basée sur les vues

Ajouter la dépendance

Kotlin

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

Groovy

implementation "androidx.media3:media3-ui:1.7.1"

PlayerView

Le composant le plus important est PlayerView, une vue pour la lecture multimédia. PlayerView affiche la vidéo, les images, les sous-titres et la pochette de l'album pendant la lecture, ainsi que les commandes de lecture.

PlayerView dispose d'une méthode setPlayer() pour associer et dissocier (en transmettant null) les instances Player.

PlayerView peut être utilisé pour la lecture de vidéos, d'images et de contenus audio. Il affiche la vidéo et les sous-titres en cas de lecture vidéo, les bitmaps pour la lecture d'images et peut afficher les pochettes incluses en tant que métadonnées dans les fichiers audio. Vous pouvez l'inclure dans vos fichiers de mise en page comme n'importe quel autre composant d'UI. Par exemple, un PlayerView peut être inclus avec le code XML suivant :

<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"/>

L'extrait ci-dessus montre que PlayerView fournit plusieurs attributs. Ces attributs peuvent être utilisés pour personnaliser le comportement de la vue, ainsi que son apparence. La plupart de ces attributs ont des méthodes de setter correspondantes, qui peuvent être utilisées pour personnaliser la vue au moment de l'exécution. La documentation PlayerView liste ces attributs et méthodes setter plus en détail.

Pour une expérience utilisateur plus confortable, envisagez d'ajouter l'attribut keepScreenOn Android ou de définir un verrouillage de réveil si vous utilisez ExoPlayer. Vous pouvez examiner d'autres actions qui maintiennent l'appareil en éveil sur les pages Travail en arrière-plan.

android:keepScreenOn="true"

Une fois la vue déclarée dans le fichier de mise en page, elle peut être recherchée dans la méthode onCreate de l'activité :

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);
}

Une fois le lecteur initialisé, il peut être associé à la vue en appelant 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 est l'une des sous-vues PlayerView qui contient la barre de progression et les boutons permettant de contrôler la lecture. Notez que PlayerControlView n'est pas destiné à être utilisé comme composant autonome en dehors de PlayerView. Vous pouvez le personnaliser en définissant des attributs sur PlayerView (qui seront transmis à PlayerControlView) ou en fournissant un contrôleur personnalisé avec android:id="@id/exo_controller.

Choisir un type de surface

L'attribut surface_type de PlayerView vous permet de définir le type de surface utilisé pour la lecture de la vidéo. Les valeurs autorisées sont surface_view, texture_view, spherical_gl_surface_view (valeur spéciale pour la lecture de vidéos sphériques), video_decoder_gl_surface_view (pour le rendu vidéo à l'aide de moteurs de rendu d'extension) et none (pour la lecture audio uniquement). Pour savoir quel type de surface choisir, consultez la page "Surface".