Google a dévoilé une nouvelle collection de bibliothèques pour la lecture des médias lors de son Android Dev Summit 2021. Jetpack Media 3 combine et étend les fonctions des bibliothèques précédentes. En outre, le paquet est censé garantir la stabilité des API. À l’heure actuelle, cependant, il a toujours le statut alpha.
Jusqu’à présent, les développeurs ont pu utiliser trois bibliothèques de médias : Jetpack Media ou MediaCompat, Jetpack Media2 et ExoPlayer. La première bibliothèque offre principalement des classes pour la gestion des sessions média et la seconde dispose d’éléments d’interface utilisateur pour contrôler la lecture à bord. Media2 contient déjà une combinaison des deux.
Sommaire
Toutes les bonnes choses viennent par trois
Selon le billet de blog présentant la nouvelle collection de bibliothèques Jetpack, l’équipe de Media3 a sélectionné et adapté les caractéristiques essentielles des bibliothèques précédentes en termes d’interface utilisateur, de lecture et de gestion des sessions média.
Le billet de blog met en avant trois bibliothèques comme éléments centraux :
- media3-exoplayer offre des fonctions simples pour lire les médias via l’ExoPlayer,
- media3-ui contient principalement des vues pour l’affichage des contrôles de lecture dans l’interface utilisateur et des vues pour l’affichage de l’interface utilisateur.
- media3-session fournit des objets pour créer et interagir avec les sessions média.
Il ne peut y avoir qu’un seul
Un composant essentiel de Jetpack Media 3 est une Player
qui combine ou remplace les objets des bibliothèques précédentes qui servent à la lecture et aux fonctions telles que play
, pause
ou skip
fournir. La base du nouveau joueur est l’interface du joueur d’ExoPlayer. Au cours de l’unification, des classes telles que MediaController
mettre en œuvre le nouveau joueur.
L’interface unifiée du lecteur offre également une connexion directe aux sessions multimédia, comme le montre l’extrait de code suivant, tiré du blog sur le développement d’Android :
player = ExoPlayer.Builder(context).build()
session = MediaSession.Builder(context, player).build()
Grâce à cette intégration, la session média reflète toujours l’état du lecteur, qui, à l’inverse, reçoit toutes les commandes envoyées à la session.
Une situation médiatique stable
De nombreuses API dans Jetpack Media3 comme Player
et MediaItem
sont marqués comme stables. Cependant, la plupart des API pour la partie ExoPlayer sont considérées comme étant de type MediaSource
sont considérés comme instables. Pour ces derniers, le OptIn
-est nécessaire pour l’utiliser dans vos propres applications :
@androidx.annotation.OptIn(UnstableApi::class)
private fun initializeExoPlayer() {
// ...
}
Vous trouverez de plus amples informations sur la collection de bibliothèques Jetpack Media3 sur le blog des développeurs Android. Une description complète de la première alpha se trouve dans les notes de publication. La page du projet contient des instructions sur la manière de l’intégrer dans vos propres applications et une application de démonstration sur GitHub devrait vous aider à démarrer.