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“.