Media2

Condividere contenuti multimediali e controlli con altre app.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Versione alpha
10 gennaio 2024 1.3.0 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza da Media2, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

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")
}

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Versione 1.3

Versione 1.3.0

10 gennaio 2024

androidx.media2:media2-*:1.3.0 viene rilasciato. La versione 1.3.0 contiene questi commit.

Modifiche importanti dalla versione 1.2.0

  • androidx.media2 è ora completamente ritirato. Utilizza androidx.media3.

Versione 1.3.0-rc01

13 dicembre 2023

androidx.media2:media2-*:1.3.0-rc01 viene rilasciato senza modifiche rispetto a Media2 1.3.0-beta01. La versione 1.3.0-rc01 contiene questi commit.

Versione 1.3.0-beta01

29 novembre 2023

androidx.media2:media2-*:1.3.0-beta01 viene rilasciato senza modifiche rispetto a Media2 1.3.0-alpha01. La versione 1.3.0-beta01 contiene questi commit.

Versione 1.3.0-alpha01

15 novembre 2023

androidx.media2:media2-*:1.3.0-alpha01 viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.

Modifiche all'API

  • androidx.media2 è stato completamente ritirato. Utilizza invece androidx.media3. (I53164)

Versione 1.2.1

Versione 1.2.1

9 febbraio 2022

androidx.media2:media2-*:1.2.1 viene rilasciato. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • Correzione del controllo dei Parcelable personalizzati quando si sceglie come target l'API 33.

Versione 1.2.0

Versione 1.2.0

15 settembre 2021

androidx.media2:media2-*:1.2.0 viene rilasciato. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • Supporta l'interoperabilità con i contenuti multimediali AndroidX di (prepare|play)From(MediaId|Uri|Search)
  • Aggiunti MEDIA_URI_PATH_SET_MEDIA_URI e MEDIA_URI_QUERY_URI in MediaConstants

Versione 1.2.0-rc01

1° settembre 2021

androidx.media2:media2-*:1.2.0-rc01 viene rilasciato. La versione 1.2.0-rc01 contiene questi commit.

Correzioni di bug

Versione 1.2.0-beta01

30 giugno 2021

androidx.media2:media2-*:1.2.0-beta01 viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • Supporta l'interoperabilità con i contenuti multimediali AndroidX di (prepare|play)From(MediaId|Uri|Search)

Modifiche all'API

  • Sono stati aggiunti MEDIA_URI_PATH_SET_MEDIA_URI e MEDIA_URI_QUERY_URI in MediaConstants

Versione 1.2.0-alpha01

21 aprile 2021

androidx.media2:media2-*:1.2.0-alpha01 viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.

Modifiche all'API

  • Aggiunta del supporto per (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)

Correzioni di bug

  • Risolto un problema di deadlock causato da blocchi sincronizzati non necessari.
  • Reimpostare il player quando non sono presenti elementi riproducibili
  • Consenti a onCurrentMediaItemChanged di accettare un elemento multimediale null
  • Aggiornare la notifica quando l'elemento multimediale corrente viene modificato
  • Correggi l'interoperabilità con la compatibilità del controller subito dopo la creazione della sessione

Versione 1.1.3

Versione 1.1.3

21 aprile 2021

androidx.media2:media2-*:1.1.3 viene rilasciato. La versione 1.1.3 contiene questi commit.

Correzioni di bug

  • Risolto un problema di blocco delle risorse causato da blocchi sincronizzati non necessari.

Versione 1.1.2

Versione 1.1.2

27 gennaio 2021

androidx.media2:media2-*:1.1.2 viene rilasciato. La versione 1.1.2 contiene questi commit.

Correzioni di bug

Versione 1.1.1

Versione 1.1.1

16 dicembre 2020

androidx.media2:media2-*:1.1.1 viene rilasciato. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • Aggiorna la notifica multimediale quando l'elemento multimediale corrente viene modificato.

Versione 1.1.0

Versione 1.1.0

2 dicembre 2020

androidx.media2:media2-*:1.1.0 viene rilasciato. La versione 1.1.0 contiene questi commit.

Modifiche principali dalla versione 1.0.0

  • Sono state aggiunte altre API per la gestione delle tracce multimediali
  • Miglior supporto dell'interoperabilità con la raccolta multimediale AndroidX
    • Opzione MediaSession#setMediaUri aggiunta
    • MediaSessionCompat.Token esposto tramite MediaSession#getSessionCompatToken()

Versione 1.1.0-rc01

28 ottobre 2020

androidx.media2:media2-*:1.1.0-rc01 viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.

  • È stato risolto un problema per cui MediaController inviava notifiche di callback mentre deteneva una serratura, causando potenziali deadlock (I76c56
  • È stato risolto un problema per cui MediaSessionImplBase#isClosed() poteva arrestarsi in modo anomalo durante la chiamata a getCurrentControllerInfo() su un MediaSessionCompat rilasciato. (aosp/1423291]
  • È stato risolto un problema per cui media2 MediaSession non impostava l'ID elemento della coda attiva su PlaybackStateCompat (aosp/1421652)
  • È stato aggiunto il flag BIND_INCLUDE_CAPABILITIES durante l'associazione al servizio, che consente alle applicazioni multimediali headless di accedere alla posizione se dispongono dell'autorizzazione. Questo è utile in particolare per le app Android Auto. (aosp/1440731)

Versione 1.1.0-beta01

16 settembre 2020

androidx.media2:media2-*:1.1.0-beta01 viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.

Correzioni di bug

  • Reimpostare la posizione corrente quando l'elemento multimediale cambia
  • Invia metadati e stato del buffering quando è connesso
  • Correzione dell'arresto anomalo durante l'invio di dati di grandi dimensioni tra una sessione e un controller
  • Aggiungi <queries> al manifest per media e media2 per Android 11
  • Correggi l'errore NPE per MediaController.getPlaylist()
  • Disattivare la barra di avanzamento di MediaControlView quando il comando di ricerca non è consentito
  • Invia una notifica a PlaybackStateCompat quando l'elemento multimediale corrente di una sessione è stato modificato
  • Correggi il frazionamento di SessionPlayer.TrackInfo

Versione 1.1.0-alpha01

24 giugno 2020

androidx.media2:media2-*:1.1.0-alpha01 viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.

Correzioni di bug

  • È stato corretto un problema di temporizzazione durante l'aggiornamento dei metadati (I45567, b/143999611)
  • SessionResult manterrà il MediaItem da PlayerResult (I927b0, b/154885520)
  • È stato corretto un bug per cui MediaController#setVolumeTo() poteva cambiare il volume dello stream errato. (I76870, b/151204736)

Versione 1.0.3

Versione 1.0.3

19 febbraio 2020

androidx.media2:media2-*:1.0.3 viene rilasciato. La versione 1.0.3 di media2-{common,player,session} contiene questi commit e la versione 1.0.3 di media2-widget contiene questi commit

Correzioni di bug

  • È stato corretto un NullPointerException durante la creazione di MediaController con un callback null
  • È stato risolto il problema per cui onPlaylistChanged() non veniva chiamato dopo MediaPlayer.setMediaItem

Versione 1.0.2

Versione 1.0.2

5 febbraio 2020

androidx.media2:media2-*:1.0.2 viene rilasciato. La versione 1.0.2 di media2-{common,player,session} contiene questi commit e la versione 1.0.2 di media2-widget contiene questi commit

Correzioni di bug

  • È stato corretto un problema relativo a IndexOutOfBoundsException in MediaPlayer#getSelectedTrack(). (aosp/987003)
  • È stata migliorata la gestione del caso in cui ExoPlayer chiama getDuration() e l'elemento multimediale non esiste (aosp/987484)
  • È stato corretto un bug per cui ExoPlayer non generava un IllegalStateException quando getDuration() viene chiamato in uno stato IDLE (aosp/987246)
  • Non consentire Parcelable personalizzati per media2 (aosp/1091056)
  • È stato risolto un problema che causava l'arresto anomalo in close() (aosp/1096455)
  • MediaBrowser: è stata migliorata la gestione degli errori in subscribe() con MediaBrowserService (aosp/1158057)
  • È stato corretto un arresto anomalo di MediaController con MediaSession del framework(aosp/1177663)
  • Non inviare una notifica delle informazioni sulla sessione tramite i callback quando viene stabilita la connessione (aosp/1195030, b/142925848)
  • Risolto un problema per cui un SessionResult può essere inviato più volte in modo imprevisto da MediaController (aosp/1198634)
  • È stato risolto un problema per cui MediaController potrebbe inviare comandi non consentiti a MediaSession, quindi ora MediaSession invia RESULT_ERROR_PERMISSION_DENIED (aosp/1204183)
  • È stato risolto un problema intermittente con MediaControllerView#setPlayer (aosp/987004)

Versione 1.0.1

Versione 1.0.1

9 ottobre 2019

androidx.media2:media2-*:1.0.1 viene rilasciato. La versione 1.0.1 di androidx.media2:media2-{player, session}:1.0.1 contiene questi commit e la versione 1.0.1 di androidx.media2:media2-widget:1.0.1contiene questi commit.

Correzioni di bug

  • È stato corretto un errore RuntimeException quando una sottoclasse di MediaItem viene inviata durante il processo (aosp/1098971)
  • Risolto un problema per cui MediaPlayer chiama onCurrentMediaItemChanged() una sola volta durante la riproduzione di una playlist
  • È stato risolto un problema per cui MediaPlayer non riusciva a riprodurre una playlist con più di 2 elementi (aosp/1108440)
  • È stato risolto un problema per cui il player continuava a riprodurre su SurfaceView, anche se era invisibile
  • È stato risolto un problema di riproduzione di VideoView che si verifica quando viene effettuata una chiamata a setViewType prima del giorno setPlayer

Versione 1.0.0

5 settembre 2019

androidx.media2:media2-*:1.0.0 viene rilasciato. Questi sono i commit inclusi in media2-{player, session}:1.0.0 e questi sono i commit inclusi in media2-widget:1.0.0.

Funzionalità principali di Media2 1.0.0

Media2 è la prossima generazione delle seguenti API Media: MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoView e MediaControlView.

  • media2.player.MediaPlayer
    • Le API sono associate principalmente a android.media.MediaPlayer e il motore sottostante è ExoPlayer
    • Gestione del rumore e del focus audio integrati
    • Implementa SessionPlayer
  • media2.session.MediaSession
    • Fornisce controlli granulari delle autorizzazioni
    • Supporta layout personalizzati
    • Facile da usare con SessionPlayer, ad esempio androidx.media2.player.MediaPlayer
    • Interoperabile con MediaControllerCompat
  • media2.session.MediaSessionService
    • Una versione leggera di MediaLibraryService
    • Fornisce la gestione del ciclo di vita del servizio per la riproduzione in background
    • Interoperabile con MediaControllerCompat e MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Supporta una paginazione migliore per la navigazione tra elementi multimediali o risultati di ricerca contenenti molti elementi
    • Interoperabile con MediaControllerCompat e MediaBrowserServiceCompat
  • media2.session.MediaController
    • Può connettersi a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperabile con MediaSessionCompat e MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Eredita MediaController
    • Può connettersi a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperabile con MediaSessionCompat e MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Contiene tutte le funzionalità di android.widget.VideoView
    • Consente il passaggio da TextureView a SurfaceView
    • Può essere utilizzato insieme a MediaSession
  • media2.widget.MediaControlView
    • Aspetto e design migliorati
    • Contiene tutte le funzionalità di android.widget.MediaController
    • Consente di selezionare la traccia dei sottotitoli, la velocità di riproduzione e la modalità a schermo intero

Versione 1.0.0-rc02

22 agosto 2019

androidx.media2:media2-*:1.0.0-rc02 è stata rilasciata e le modifiche incluse in questa versione sono disponibili qui. Questa release include androidx.media2:media2-widget:1.0.0-rc02 e le modifiche incluse in questa versione sono disponibili qui.

Nuove funzionalità

  • Non è più consentito chiamare setPlayer o setController tramite MediaControlView (MCV) quando MediaControlView appartiene a un VideoView

Correzioni di bug

  • MediaControlView: i pulsanti Avanti e Indietro sono cliccabili solo se sono presenti elementi multimediali precedenti o successivi
  • MediaControlView: è stato corretto un problema di instabilità di NullPointerException quando viene chiamato onAttachedToWindow()
  • Il widget Media2 ora gestisce correttamente i metadati del nuovo elemento multimediale quando quello corrente è stato modificato

Media2-Widget versione 1.0.0-beta01

2 luglio 2019

androidx.media2:media2-widget:1.0.0-beta01 viene rilasciato. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Riproduzione in background: anziché creare un player all'interno di VideoView, VideoView può utilizzare SessionPlayer o MediaController in modo che l'app possa passare alla modalità di riproduzione in background senza problemi.
  • È stata rimossa la dipendenza dalla libreria media2-player
  • Opzione onViewTypeChangedListener aggiunta

Modifiche all'API

  • Modifica della visibilità da pubblica a protetta:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Rimosso:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Aggiunto:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

Versione 1.0.0-rc01

18 giugno 2019

androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01 e androidx.media2:media2-session:1.0.0-rc01 sono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche all'API

  • Le dipendenze da ListenableFuture sono state migrate nuovamente all'implementazione autonoma di Guava.

  • Tieni presente che se hai target di test che dipendono dall'elemento Guava completo, potresti riscontrare un conflitto di risoluzione delle dipendenze quando utilizzi determinate versioni del plug-in Gradle per Android. Se riscontri un errore Could not resolve all artifacts relativo a ListenableFuture, puoi aggirare temporaneamente il problema aggiungendo android.dependency.useConstraints=false alla configurazione di compilazione del progetto. Stiamo lavorando a una correzione permanente all'interno del plug-in Android Gradle da rilasciare in un secondo momento.

Versione 1.0.0-beta02

5 giugno 2019

androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02 e androidx.media2:media2-session:1.0.0-beta02 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • L'impostazione di una velocità di riproduzione negativa su androidx.media.player.MediaPlayer restituirà RESULT_ERROR_BAD_VALUE.
  • Sostituire Guava ListenableFuture con l'implementazione di Jetpack (aosp/968828)

Versione 1.0.0-beta01

7 maggio 2019

androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01 e androidx.media2:media2-session:1.0.0-beta01 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Le librerie sono suddivise in tre parti: media2-common, media2-player e media2-session
  • Modifica di IllegalPointerException in NullPointerException per gli argomenti null contrassegnati come @NonNull.

Modifiche all'API

  • Introdotta MediaController.Builder
  • Sono stati aggiunti metodi di impostazione per i campi facoltativi di FileMediaItem.Builder
  • MediaController e MediaBrowser possono inviare i suggerimenti di connessione dell'applicazione a MediaSession, MediaSessionService o MediaLibraryService
  • Alcuni metodi sono stati rinominati per rispettare le API Media2 di Android 10

Versione 1.0.0-alpha04

17 dicembre 2018

Modifiche all'API

  • Sono stati rinominati i seguenti corsi:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Sono state unite le seguenti classi:
    • DataSourceDesc2 e MediaItem2 sono stati combinati in MediaItem
    • MediaPlaylistAgent e MediaPlayerConnector sono stati combinati in SessionPlayer
  • Sono state aggiunte le seguenti sottoclassi di Rating: HeartRating, PercentageRating, StarRating e ThumbRating
  • Media2 ora utilizza ListenableFuture per i metodi asincroni