Media2

Partagez des contenus et des commandes multimédias avec d'autres applications.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
10 janvier 2024 1.3.0 - - -

Déclarer des dépendances

Pour ajouter une dépendance sur Media2, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

Groovy

dependencies {
    def media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation "androidx.media2:media2-session:$media2_version"
    // optional - UI widgets for VideoView and MediaControlView
    implementation "androidx.media2:media2-widget:$media2_version"
    // optional - Implementation of a SessionPlayer
    implementation "androidx.media2:media2-player:$media2_version"
}

Kotlin

dependencies {
    val media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation("androidx.media2:media2-session:$media2_version")
    // optional - UI widgets for VideoView and MediaControlView
    implementation("androidx.media2:media2-widget:$media2_version")
    // optional - Implementation of a SessionPlayer
    implementation("androidx.media2:media2-player:$media2_version")
}

Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez les documents sur l'outil Issue Tracker.

Version 1.3

Version 1.3.0

10 janvier 2024

Publication d'androidx.media2:media2-*:1.3.0. Liste des commits de la version 1.3.0

Changements importants depuis la version 1.2.0

  • androidx.media2 est désormais complètement obsolète. Utilisez androidx.media3 à la place.

Version 1.3.0-rc01

13 décembre 2023

Publication d'androidx.media2:media2-*:1.3.0-rc01 sans aucune modification par rapport à la version 1.3.0-beta01 de Media2. Liste des commits de la version 1.3.0-rc01

Version 1.3.0-beta01

29 novembre 2023

Publication d'androidx.media2:media2-*:1.3.0-beta01 sans aucune modification par rapport à la version 1.3.0-alpha01 de Media2. Liste des commits de la version 1.3.0-beta01

Version 1.3.0-alpha01

15 novembre 2023

Publication d'androidx.media2:media2-*:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01

Modifications apportées à l'API

  • androidx.media2 est désormais complètement obsolète. Utilisez plutôt androidx.media3. (I53164).

Version 1.2.1

Version 1.2.1

9 février 2022

Publication d'androidx.media2:media2-*:1.2.1. Liste des commits de la version 1.2.1

Correction de bugs

  • Correction de la vérification des éléments Parcelable personnalisés lors du ciblage de l'API 33.

Version 1.2.0

Version 1.2.0

15 septembre 2021

Publication d'androidx.media2:media2-*:1.2.0. Liste des commits de la version 1.2.0

Changements importants depuis la version 1.1.0

  • Prise en charge de l'interopérabilité avec les contenus multimédias AndroidX de (prepare|play)From(MediaId|Uri|Search).
  • Ajout de MEDIA_URI_PATH_SET_MEDIA_URI et MEDIA_URI_QUERY_URI dans MediaConstants.

Version 1.2.0-rc01

1er septembre 2021

Publication d'androidx.media2:media2-*:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01

Correction de bugs

  • Correction de l'erreur ANR lors de la fermeture de la notification multimédia. (Ifdcc2, b/148011394)

Version 1.2.0-beta01

30 juin 2021

Publication d'androidx.media2:media2-*:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Nouvelles fonctionnalités

  • Prise en charge de l'interopérabilité avec les contenus multimédias AndroidX de (prepare|play)From(MediaId|Uri|Search).

Modifications apportées à l'API

  • Ajout de MEDIA_URI_PATH_SET_MEDIA_URI et MEDIA_URI_QUERY_URI dans MediaConstants.

Version 1.2.0-alpha01

21 avril 2021

Publication d'androidx.media2:media2-*:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01

Modifications apportées à l'API

Correction de bugs

  • Résolution d'un problème d'interblocage causé par des blocages synchronisés inutiles.
  • Réinitialisation du lecteur lorsqu'il n'existe aucun élément à lire.
  • Mise à jour d'onCurrentMediaItemChanged pour qu'il puisse utiliser l'élément multimédia "null".
  • Mise à jour de la notification lorsque l'élément multimédia actuel est modifié.
  • Résolution du problème d'interopérabilité avec la manette juste après la création de la session.

Version 1.1.3

Version 1.1.3

21 avril 2021

Publication d'androidx.media2:media2-*:1.1.3. Liste des commits de la version 1.1.3

Correction de bugs

  • Résolution d'un problème d'interblocage causé par des blocages synchronisés inutiles.

Version 1.1.2

Version 1.1.2

27 janvier 2021

Publication d'androidx.media2:media2-*:1.1.2. Liste des commits de la version 1.1.2

Correction de bugs

Version 1.1.1

Version 1.1.1

16 décembre 2020

Publication d'androidx.media2:media2-*:1.1.1. Liste des commits de la version 1.1.1

Correction de bugs

  • Mise à jour de la notification multimédia lorsque l'élément multimédia actuel est modifié.

Version 1.1.0

Version 1.1.0

2 décembre 2020

Publication d'androidx.media2:media2-*:1.1.0. Liste des commits de la version 1.1.0

Principales modifications depuis la version 1.0.0

  • Ajout d'API pour la gestion des pistes multimédias.
  • Meilleure prise en charge de l'interopérabilité avec la bibliothèque multimédia AndroidX.
    • Ajout de MediaSession#setMediaUri.
    • MediaSessionCompat.Token exposé via MediaSession#getSessionCompatToken().

Version 1.1.0-rc01

28 octobre 2020

Publication d'androidx.media2:media2-*:1.1.0-rc01. Liste des commits de la version 1.1.0-rc01

  • Résolution d'un problème qui provoquait un éventuel interblocage des rappels de MediaController lors du maintien d'un verrouillage. (I76c56)
  • Résolution d'un problème de plantage potentiel de MediaSessionImplBase#isClosed() lors de l'appel de getCurrentControllerInfo() sur un MediaSessionCompat publié. (aosp/1423291]
  • Résolution d'un problème qui empêchait l'élément media2 MediaSession de définir l'ID d'élément de la file d'attente active sur PlaybackStateCompat. (aosp/1421652)
  • Ajout de l'indicateur BIND_INCLUDE_CAPABILITIES lors de la liaison au service, qui permet aux applications multimédias sans interface graphique d'accéder à la position si elles disposent de l'autorisation. Cette fonctionnalité est particulièrement utile pour les applications Android Auto. (aosp/1440731)

Version 1.1.0-beta01

16 septembre 2020

Publication d'androidx.media2:media2-*:1.1.0-beta01. Liste des commits de la version 1.1.0-beta01

Correction de bugs

  • Réinitialisation de la position actuelle lorsque l'élément multimédia change.
  • Envoi des métadonnées et de l'état de mise en mémoire tampon lorsque l'appareil est connecté.
  • Résolution du problème de plantage lors de l'envoi de données volumineuses entre une session et un contrôleur.
  • Ajout de <queries> au fichier manifeste pour media et media2 pour Android 11.
  • Correction de l'exception NPE pour MediaController.getPlaylist().
  • Désactivation de la barre de progression de MediaControlView lorsque la commande de recherche n'est pas autorisée.
  • Notification de PlaybackStateCompat lorsque l'élément multimédia actuel d'une session a été modifié.
  • Correction des parcelles de SessionPlayer.TrackInfo.

Version 1.1.0-alpha01

24 juin 2020

Publication d'androidx.media2:media2-*:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01

Correction de bugs

  • Résolution du problème de mise à jour des métadonnées. (I45567, b/143999611)
  • SessionResult conserve l'élément MediaItem de PlayerResult. (I927b0, b/154885520)
  • Correction d'un bug où MediaController#setVolumeTo() pouvait changer le volume de flux incorrect. (I76870, b/151204736)

Version 1.0.3

Version 1.0.3

19 février 2020

Publication d'androidx.media2:media2-*:1.0.3. Liste des commits de la version 1.0.3 de media2-{common,player,session} et Liste des commits de la version 1.0.3 de media2-widget

Correction de bugs

  • Correction d'une exception NullPointerException lors de la création de MediaController avec un rappel "null".
  • Résolution du problème où onPlaylistChanged() n'était pas appelé après MediaPlayer.setMediaItem.

Version 1.0.2

Version 1.0.2

5 février 2020

Publication d'androidx.media2:media2-*:1.0.2. Liste des commits de la version 1.0.2 de media2-{common,player,session} et Liste des commits de la version 1.0.2 de media2-widget

Corrections de bugs

  • Correction d'une exception IndexOutOfBoundsException dans MediaPlayer#getSelectedTrack(). (aosp/987003)
  • Amélioration de la gestion du cas où ExoPlayer appelle getDuration() et que l'élément multimédia n'existe pas. (aosp/987484)
  • Correction d'un bug qui empêchait ExoPlayer de générer une exception IllegalStateException lorsque getDuration() était appelé à l'état IDLE. (aosp/987246)
  • Éléments Parcelable personnalisés non autorisés pour media2. (aosp/1091056)
  • Résolution d'un problème qui entraînait le blocage dans close(). (aosp/1096455)
  • MediaBrowser : amélioration du traitement des erreurs dans subscribe() avec MediaBrowserService. (aosp/1158057)
  • Résolution du problème de plantage de MediaController avec le framework MediaSession. (aosp/1177663)
  • Pas d'envoi d'informations sur la session via des rappels lorsque la connexion est établie. (aosp/1195030, b/142925848)
  • Correction d'un problème qui pouvait entraîner l'envoi répété d'un résultat de session à partir de MediaController de manière inattendue. (aosp/1198634)
  • Résolution d'un problème où MediaController envoyait des commandes non autorisées à MediaSession. MediaSession envoie désormais RESULT_ERROR_PERMISSION_DENIED. (aosp/1204183)
  • Résolution d'un problème d'instabilité avec MediaControllerView#setPlayer. (aosp/987004)

Version 1.0.1

Version 1.0.1

9 octobre 2019

Publication d'androidx.media2:media2-*:1.0.1. Liste des commits de la version 1.0.1 de androidx.media2:media2-{player, session}:1.0.1 et Liste des commits de la version 1.0.1 de androidx.media2:media2-widget:1.0.1

Corrections de bugs

  • Correction d'une exception RuntimeException lorsqu'une sous-classe de MediaItem est envoyée tout au long du processus. (aosp/1098971)
  • Résolution d'un problème où MediaPlayer n'appelait onCurrentMediaItemChanged() qu'une seule fois lors de la lecture d'une playlist.
  • Résolution d'un problème où MediaPlayer lisait une playlist contenant plus de deux éléments. (aosp/1108440)
  • Résolution d'un problème où le lecteur continuait la lecture sur SurfaceView, même s'il était invisible.
  • Résolution d'un problème de lecture VideoView qui survenait lorsqu'un appel était passé à setViewType avant setPlayer.

Version 1.0.0

5 septembre 2019

Publication d'androidx.media2:media2-*:1.0.0. Liste des commits inclus dans media2-{player, session}:1.0.0 et Liste des commits inclus dans media2-widget:1.0.0

Fonctionnalités principales de Media2 1.0.0

Media2 est la nouvelle génération d'API Media suivantes : MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoView et MediaControlView.

  • media2.player.MediaPlayer
    • Les API sont pour la plupart mises en correspondance avec android.media.MediaPlayer, et le moteur sous-jacent est ExoPlayer.
    • Intégration de la priorité audio intégrée et de la gestion du bruit.
    • Implémentation de SessionPlayer.
  • media2.session.MediaSession
    • Contrôles d'autorisation précis.
    • Prise en charge des mises en page personnalisées.
    • Simplicité d'utilisation avec SessionPlayer, comme androidx.media2.player.MediaPlayer.
    • Interopérabilité avec MediaControllerCompat.
  • media2.session.MediaSessionService
    • Version allégée de MediaLibraryService.
    • Fournit une gestion du cycle de vie des services pour la lecture en arrière-plan.
    • Interopérabilité avec MediaControllerCompat et MediaBrowserServiceCompat.
  • media2.session.MediaLibraryService
    • Amélioration de la pagination pour la navigation dans les éléments multimédias ou les résultats de recherche contenant de nombreux éléments.
    • Interopérabilité avec MediaControllerCompat et MediaBrowserServiceCompat.
  • media2.session.MediaController
    • Possibilité de se connecter à MediaSession, MediaSessionService et MediaLibraryService.
    • Interopérabilité avec MediaSessionCompat et MediaBrowserServiceCompat.
  • media2.session.MediaBrowser
    • Hérite de MediaController.
    • Possibilité de se connecter à MediaSession, MediaSessionService et MediaLibraryService.
    • Interopérabilité avec MediaSessionCompat et MediaBrowserServiceCompat.
  • media2.widget.VideoView
    • Contient toutes les fonctionnalités de android.widget.VideoView.
    • Permet de basculer entre TextureView et SurfaceView.
    • Fonctionne avec MediaSession.
  • media2.widget.MediaControlView
    • Apparence améliorée.
    • Contient toutes les fonctionnalités de android.widget.MediaController.
    • Permet de sélectionner la piste de sous-titres, la vitesse de lecture et le mode plein écran.

Version 1.0.0-rc02

22 août 2019

Publication d'androidx.media2:media2-*:1.0.0-rc02. Les modifications incluses dans cette version sont disponibles ici. Cette version comprend androidx.media2:media2-widget:1.0.0-rc02, et les modifications qui y sont incluses sont disponibles ici.

Nouvelles fonctionnalités

  • setPlayer ou setController ne peuvent plus être appelés via MediaControlView (MCV) lorsque MediaControlView appartient à un élément VideoView.

Corrections de bugs

  • MediaControlView : les boutons "Suivant" et "Précédent" ne sont cliquables que s'il existe des éléments multimédias suivants ou précédents.
  • MediaControlView : correction d'une exception NullPointerException instable lors de l'appel d'onAttachedToWindow().
  • Le widget Media2 gère désormais correctement les métadonnées du nouvel élément multimédia lorsque celui-ci a été modifié.

Media2-Widget version 1.0.0-beta01

2 juillet 2019

Publication d'androidx.media2:media2-widget:1.0.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.

Nouvelles fonctionnalités

  • Lecture en arrière-plan : au lieu de créer un lecteur dans VideoView, VideoView peut utiliser SessionPlayer ou MediaController pour que l'application passe facilement en mode lecture en arrière-plan.
  • Suppression de la dépendance avec la bibliothèque media2-player.
  • onViewTypeChangedListener ajouté.

Modifications apportées à l'API

  • La visibilité passe de publique à protégée :
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Suppression :
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Ajouté :
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

Version 1.0.0-rc01

18 juin 2019

Publication d'androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01 et androidx.media2:media2-session:1.0.0-rc01. Les commits inclus dans cette version sont disponibles sur cette page.

Modifications apportées à l'API

  • Les dépendances de ListenableFuture ont été migrées vers l'implémentation autonome de Guava.

  • Notez que si vous avez des cibles de test qui dépendent de l'artefact Guava complet, vous pouvez rencontrer un conflit de résolution des dépendances lors de l'utilisation de certaines versions du plug-in Android Gradle. Si vous rencontrez une erreur Could not resolve all artifacts impliquant ListenableFuture, vous pouvez temporairement contourner le problème en ajoutant android.dependency.useConstraints=false à la configuration de compilation de votre projet. Nous travaillons actuellement sur un correctif permanent pour le plug-in Android Gradle, qui sera publié à une date ultérieure.

Version 1.0.0-beta02

5 juin 2019

Publication d'androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02 et androidx.media2:media2-session:1.0.0-beta02. Les commits inclus dans cette version sont disponibles sur cette page.

Corrections de bugs

  • La définition d'une vitesse de lecture négative sur androidx.media.player.MediaPlayer renvoie RESULT_ERROR_BAD_VALUE.
  • Remplacement de l'élément ListenableFuture de Guava par l'implémentation de Jetpack. (aosp/968828)

Version 1.0.0-beta01

7 mai 2019

Publication d'androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01 et androidx.media2:media2-session:1.0.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.

Nouvelles fonctionnalités

  • Les bibliothèques sont divisées en trois parties : media2-common, media2-player, media2-session.
  • IllegalPointerException remplacé par NullPointerException pour les arguments de valeur "null" marqués comme @NonNull.

Modifications apportées à l'API

  • Introduction de MediaController.Builder.
  • Ajout de méthodes "setter" pour les champs facultatifs de FileMediaItem.Builder.
  • MediaController et MediaBrowser peuvent envoyer des indications de connexion de l'application à MediaSession, MediaSessionService ou MediaLibraryService.
  • Certaines méthodes ont été renommées pour suivre les API Android 10 Media2.

Version 1.0.0-alpha04

17 décembre 2018

Modifications apportées à l'API

  • Changement de nom des classes suivantes :
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Fusion des classes suivantes :
    • DataSourceDesc2 et MediaItem2 ont été combinés dans MediaItem.
    • MediaPlaylistAgent et MediaPlayerConnector ont été combinés dans SessionPlayer.
  • Ajout des sous-classes suivantes de Rating : HeartRating, PercentageRating, StarRating et ThumbRating.
  • Media2 utilise désormais ListenableFuture pour les méthodes asynchrones.