Android-Entwicklung: Jetpack Media3 soll wesentliche Mediafunktionen vereinen

Die Libraries-Sammlung Jetpack Media3 bringt APIs zum Abspielen und Verwalten von Medien sowie UI-Komponenten zum Steuern der Wiedergabe.

In Pocket speichern vorlesen Druckansicht
Messe, MWC, Android

(Bild: heise online)

Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Google hat auf seinem Android Dev Summit 2021 eine neue Sammlung von Libraries für die Medienwiedergabe vorgestellt. Jetpack Media 3 kombiniert und erweitert die Funktionen der bisherigen Bibliotheken. Außerdem soll das Paket eine Stabilität der APIs gewährleisten. Derzeit besitzt es allerdings noch Alpha-Status.

Entwicklerinnen und Entwickler konnten bisher auf drei Media-Bibliotheken zurückgreifen: Jetpack Media beziehungsweise MediaCompat, Jetpack Media2 und ExoPlayer. Erstere Library bietet vor allem Klassen zum Verwalten von Media-Sessions und letztere hat UI-Elemente zum Steuern der Wiedergabe an Bord. Media2 enthält bereits eine Kombination von beiden.

Laut dem Blogbeitrag zur Vorstellung der neuen Jetpack-Library-Sammlung hat das Team für Media3 die wesentlichen Funktionen der bisherigen Libraries bezüglich der UI, der Wiedergabe und dem Verwalten von Media-Sessions ausgewählt und angepasst.

Drei Libraries hebt der Blogbeitrag als zentrale Elemente hervor:

  • media3-exoplayer bietet einfache Funktionen zur Wiedergabe von Medien über den ExoPlayer,
  • media3-ui enthält vor allem Views zum Anzeigen von Steuerelementen für die Wiedergabe in der UI und
  • media3-session bietet Objekte zum Erstellen und interagieren mit Media-Sessions.

Ein wesentlicher Bestandteil von Jetpack Media 3 ist ein einheitlicher Player, der jene Objekte der bisherigen Libraries zusammenführt beziehungsweise ersetzt, die der Wiedergabe dienen und Funktionen wie play, pause oder skip bereitstellen. Grundlage für den neuen Player ist das Player-Interface aus ExoPlayer. Im Zuge der Vereinheitlichung implementerieren Klassen wie MediaController den neuen Player.

Das neue Player-Interface bietet einen einheitlichen Zugriff auf UI-Elemente

(Bild: Google)

Das einheitliche Player-Interface bietet zudem eine direkte Anbindung an Media-Sessions, wie folgender Codeausschnitt aus dem Android-Entwicklungsblog zeigt:

player = ExoPlayer.Builder(context).build()
session = MediaSession.Builder(context, player).build()

Durch die Integration gibt die Media-Session stets den Status des Players wieder, der umgekehrt alle an die Session geschickten Befehle weitergeleitet bekommt.

Viele APIs in Jetpack Media3 wie Player und MediaItem sind als stabil gekennzeichnet. Allerdings gelten die meisten APIs für den ExoPlayer-Part wie MediaSource als instabil. Für Letztere ist die OptIn-Annotation erforderlich, um sie in eigenen Anwendungen zu verwenden:

@androidx.annotation.OptIn(UnstableApi::class)
private fun initializeExoPlayer() {
  // ...
}

Weitere Details zur Library-Sammlung Jetpack Media3 finden sich im Android-Developer-Blog. Eine umfangreiche Beschreibung der ersten Alpha lässt sich den Release Notes entnehmen. Die Projektseite enthält Anweisungen zur Integration in eigene Apps und eine Demo-Anwendung auf GitHub soll beim Einstieg helfen.

(rme)