Erste Schritte mit der auf Ansichten basierenden Benutzeroberfläche

Abhängigkeit hinzufügen

Kotlin

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

Groovy

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

PlayerView

Die wichtigste Komponente ist PlayerView, eine Ansicht für die Medienwiedergabe. PlayerView zeigt während der Wiedergabe Videos, Bilder, Untertitel und Albumcover sowie die Wiedergabesteuerung an.

PlayerView hat eine setPlayer()-Methode zum Anhängen und Trennen (durch Übergabe von null) von Player-Instanzen.

PlayerView kann für die Wiedergabe von Videos, Bildern und Audio verwendet werden. Bei der Videowiedergabe werden Video und Untertitel gerendert, bei der Bildwiedergabe Bitmaps. Außerdem können Artworks angezeigt werden, die als Metadaten in Audiodateien enthalten sind. Sie können es wie jede andere UI-Komponente in Ihre Layoutdateien einfügen. Beispielsweise kann ein PlayerView mit dem folgenden XML-Code eingefügt werden:

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

Das obige Snippet zeigt, dass PlayerView mehrere Attribute bietet. Mit diesen Attributen können Sie das Verhalten der Ansicht sowie ihr Design anpassen. Die meisten dieser Attribute haben entsprechende Setter-Methoden, mit denen die Ansicht zur Laufzeit angepasst werden kann. In der PlayerView-Dokumentation werden diese Attribute und Setter-Methoden ausführlicher beschrieben.

Wenn du die Nutzerfreundlichkeit verbessern möchtest, kannst du das Android-Attribut keepScreenOn hinzufügen oder eine Wakelock-Sperre festlegen, falls du ExoPlayer verwendest. Auf den Seiten zur Hintergrundarbeit können Sie andere Aktionen untersuchen, die das Gerät aktiv halten.

android:keepScreenOn="true"

Nachdem die Ansicht in der Layoutdatei deklariert wurde, kann sie in der onCreate-Methode der Aktivität gesucht werden:

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

Wenn ein Player initialisiert wurde, kann er durch Aufrufen von setPlayer an die Ansicht angehängt werden:

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 ist eine von PlayerView Unteransichten, die die Fortschrittsanzeige und die Schaltflächen zur Steuerung der Wiedergabe enthält. Beachten Sie, dass PlayerControlView nicht als eigenständige Komponente außerhalb von PlayerView verwendet werden soll. Sie kann angepasst werden, indem Attribute für PlayerView festgelegt werden (die an PlayerControlView übergeben werden) oder indem ein benutzerdefinierter Controller mit android:id="@id/exo_controller bereitgestellt wird.

Oberflächentyp auswählen

Mit dem Attribut surface_type von PlayerView können Sie den Typ der Oberfläche für die Videowiedergabe festlegen. Zulässige Werte sind surface_view, texture_view, spherical_gl_surface_view (ein spezieller Wert für die Wiedergabe von sphärischen Videos), video_decoder_gl_surface_view (für das Videorendering mit Erweiterungs-Renderern) und none (nur für die Audiowiedergabe). Weitere Informationen zur Auswahl des Oberflächentyps finden Sie auf der Seite „Oberfläche“.