Erste Schritte mit der auf Ansichten basierenden Benutzeroberfläche

Abhängigkeit hinzufügen

Kotlin

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

Groovy

implementation "androidx.media3:media3-ui:1.7.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 Übergeben von null) von Player-Instanzen.

PlayerView kann sowohl für die Wiedergabe von Videos und Bildern als auch für die Audiowiedergabe verwendet werden. Er rendert Video und Untertitel bei der Videowiedergabe, Bitmaps bei der Bildwiedergabe und kann Artwork anzeigen, das als Metadaten in Audiodateien enthalten ist. Sie können sie wie jede andere UI-Komponente in Ihre Layoutdateien einfügen. Ein PlayerView kann beispielsweise mit dem folgenden XML 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"/>

Der Snippet oben zeigt, dass PlayerView mehrere Attribute bereitstellt. Mit diesen Attributen können Sie das Verhalten sowie das Erscheinungsbild der Ansicht 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 genauer beschrieben.

Um die Nutzerfreundlichkeit zu verbessern, sollten Sie das Android-Attribut keepScreenOn hinzufügen oder einen Wake Lock festlegen, wenn Sie ExoPlayer verwenden. Auf den Seiten zu Hintergrundaufgaben können Sie andere Aktionen untersuchen, die das Gerät aktiv halten.

android:keepScreenOn="true"

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

Plattformtyp 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 Sonderwert für die Wiedergabe von sphärischen Videos), video_decoder_gl_surface_view (für das Rendern von Videos mit Erweiterungsrenderern) und none (nur für die Audiowiedergabe). Weitere Informationen