Erste Schritte mit der auf Ansichten basierenden Benutzeroberfläche

Abhängigkeit hinzufügen

Kotlin

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

Groovy

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

PlayerView

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

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

PlayerView kann sowohl für die Video-, Bild- als auch für die Audiowiedergabe verwendet werden. Bei der Videowiedergabe werden Videos und Untertitel gerendert, bei der Bildwiedergabe Bitmaps und bei der Audiowiedergabe können in Audiodateien enthaltene Albumcover angezeigt werden. Sie können die Komponente wie jede andere UI-Komponente in Ihre Layoutdateien einfügen. Ein PlayerView kann beispielsweise 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 Snippet oben zeigt, dass PlayerView mehrere Attribute bietet. Mit diesen Attributen können Sie das Verhalten sowie das Aussehen und die Bedienung der Ansicht anpassen. Die meisten dieser Attribute haben entsprechende Setter-Methoden, mit denen Sie die Ansicht zur Laufzeit anpassen können. In der PlayerView Dokumentation werden diese Attribute und Setter-Methoden ausführlicher beschrieben.

Für eine bessere Nutzerfreundlichkeit sollten Sie das keepScreenOn Android-Attribut hinzufügen oder eine Wake Lock-Sperre festlegen, wenn Sie ExoPlayer verwenden. Weitere Aktionen, mit denen das Gerät im Hintergrund aktiv gehalten wird, finden Sie auf den Seiten zu Hintergrundaufgaben.

android:keepScreenOn="true"

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

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

Oberflächentyp auswählen

Mit dem Attribut surface_type von PlayerView können Sie den Typ der Oberfläche festlegen, die für die Videowiedergabe verwendet wird. Die zulässigen Werte sind surface_view, texture_view, spherical_gl_surface_view (ein spezieller Wert für die Wiedergabe von 360°-Videos ), video_decoder_gl_surface_view (für das Video-Rendering mit Erweiterungs-Renderern) und none (nur für die Audiowiedergabe). Weitere Informationen zur Auswahl des richtigen Oberflächentyps finden Sie auf der Seite „Oberfläche“.