Elemento multimediale 2

Condividi controlli e contenuti multimediali con altre app.
Aggiornamento più recente Release stabile Candidato di rilascio Versione beta Versione alpha
10 gennaio 2024 1.3.0 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza su 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 artefatti necessari nel file build.gradle per l'app o il 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, vedi Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Contattaci se scopri nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

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 deprecato. Utilizza invece androidx.media3.

Versione 1.3.0-rc01

13 dicembre 2023

androidx.media2:media2-*:1.3.0-rc01 viene rilasciato senza modifiche da 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 alle API

  • L'API androidx.media2 è ora completamente deprecata. Usa invece il criterio 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

  • È stato risolto il problema relativo alla presenza di parcelle personalizzate 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)
  • MEDIA_URI_PATH_SET_MEDIA_URI e MEDIA_URI_QUERY_URI aggiunti 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

  • Corretto l'errore ANR durante la chiusura della notifica dei contenuti multimediali (Ifdcc2, b/148011394)

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 alle API

  • Aggiunti MEDIA_URI_PATH_SET_MEDIA_URI e MEDIA_URI_QUERY_URI in MediaCostantis

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 alle API

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

Correzioni di bug

  • Risolvi un problema di deadlock causato da blocchi sincronizzati non necessari.
  • Reimposta il player quando non ci sono elementi riproducibili
  • Consenti a onCurrentMediaItemChanged di accettare un elemento multimediale nullo
  • Aggiorna 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

  • Risolvi un problema di deadlock 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

  • Consente di aggiornare la notifica dei contenuti multimediali quando viene modificato l'elemento multimediale corrente.

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 importanti dalla versione 1.0.0

  • Sono state aggiunte altre API per la gestione delle tracce multimediali
  • Migliore supporto dell'interoperabilità con la libreria multimediale AndroidX
    • MediaSession#setMediaUri è stato aggiunto
    • Data esposizione: MediaSessionCompat.Token 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.

  • Risolto un problema per cui MediaController notificava le richiamate tenendo premuto un blocco, causando potenziali deadlock (I76c56
  • Risolto un problema per cui MediaSessionImplBase#isClosed() poteva arrestarsi in modo anomalo durante la chiamata a getCurrentControllerInfo() su MediaSessionCompat rilasciato. (aosp/1423291]
  • Risolto un problema per cui l'elemento multimediale 2 MediaSession non impostava l'ID elemento della coda attivo 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. Questa funzionalità è 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

  • Reimposta la posizione corrente quando l'elemento multimediale viene modificato
  • Invia metadati e stato di buffering quando connesso
  • Risolvere i problemi di arresto anomalo durante l'invio di dati di grandi dimensioni tra una sessione e un controller
  • Aggiungi <queries> al file manifest per i contenuti multimediali e i contenuti multimediali2 per Android 11
  • Correggi l'NPE per MediaController.getPlaylist()
  • Disattiva la barra di avanzamento di MediaControlView quando non è consentito il comando di ricerca
  • Invia una notifica a PlaybackStateCompat quando l'elemento multimediale corrente di una sessione viene modificato
  • Correggi la distribuzione 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

  • Risolto il problema di tempistica durante l'aggiornamento dei metadati (I45567, b/143999611)
  • SessionResult conserverà MediaItem da PlayerResult (I927b0, b/154885520)
  • Risolto un bug per cui MediaController#setVolumeTo() poteva modificare il volume errato dello stream. (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, mentre la versione 1.0.3 di media2-widget contiene questi commit

Correzioni di bug

  • Risolto il problema di NullPointerException durante la creazione di MediaController con un callback null
  • Risolto il problema per cui onPlaylistChanged() non veniva chiamato dopo il giorno 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, mentre la versione 1.0.2 di media2-widget contiene questi commit

Correzioni di bug

  • È stato corretto un IndexOutOfBoundsException in MediaPlayer#getSelectedTrack(). (aosp/987003).
  • Migliorata la gestione del caso in cui ExoPlayer chiama getDuration() e l'elemento multimediale non esiste (aosp/987484)
  • Risolto un bug per cui ExoPlayer non generava IllegalStateException quando veniva chiamato getDuration() in stato IDLE (aosp/987246)
  • Non consentire l'utilizzo di pacchetti personalizzati per media2 (aosp/1091056)
  • Risolto un problema che causava blocchi in close() (aosp/1096455)
  • MediaBrowser: gestione degli errori in subscribe() migliorata con MediaBrowserService (aosp/1158057)
  • Risolto l'arresto anomalo di MediaController con MediaSession Framework(aosp/1177663)
  • Non inviare notifiche alle informazioni sulla sessione tramite callback quando viene stabilita la connessione (aosp/1195030, b/142925848).
  • Risolto un problema per cui un SessionResult può essere inviato più di una volta in modo imprevisto da MediaController (aosp/1198634)
  • Risolto un problema per cui MediaController poteva inviare comandi non consentiti a MediaSession, per cui MediaSession ora invia RESULT_ERROR_PERMISSION_DENIED (aosp/1204183)
  • Risolto un problema irregolare 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, mentre la versione 1.0.1 di androidx.media2:media2-widget:1.0.1contiene questi commit.

Correzioni di bug

  • Correzione di un'eccezione RuntimeException quando una sottoclasse di MediaItem viene inviata attraverso il processo (aosp/1098971)
  • Risolto un problema per cui MediaPlayer chiamava onCurrentMediaItemChanged() solo una volta durante la riproduzione di una playlist
  • Risolto il problema per cui MediaPlayer poteva riprodurre una playlist con più di due elementi (aosp/1108440)
  • Risolto il problema per cui il player continuava a essere riprodotto su SurfaceView, anche se era invisibile
  • 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 media2-{player, session}:1.0.0 e i commit inclusi in media2-widget:1.0.0.

Funzionalità principali di Media2 1.0.0

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

  • media2.player.MediaPlayer
    • Le API corrispondono principalmente a android.media.MediaPlayer e il motore sottostante è ExoPlayer
    • Focus audio e gestione del rumore integrati
    • Implementa SessionPlayer
  • media2.session.MediaSession
    • Fornisce controlli delle autorizzazioni granulari
    • Supporta layout personalizzati
    • Facile da utilizzare con SessionPlayer, come androidx.media2.player.MediaPlayer
    • Interoperabilità con MediaControllerCompat
  • media2.session.MediaSessionService
    • Una versione leggera di MediaLibraryService
    • Fornisce la gestione del ciclo di vita dei servizi per la riproduzione in background
    • Interoperabilità con MediaControllerCompat e MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Supporta una migliore impaginazione per la navigazione di elementi multimediali o risultati di ricerca che contengono molti elementi.
    • Interoperabilità con MediaControllerCompat e MediaBrowserServiceCompat
  • media2.session.MediaController
    • Può connettersi a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperabilità con MediaSessionCompat e MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Eredita MediaController
    • Può connettersi a MediaSession, MediaSessionService e MediaLibraryService
    • Interoperabilità con MediaSessionCompat e MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Contiene tutte le funzionalità di android.widget.VideoView
    • Consente di passare da TextureView a SurfaceView
    • Compatibilità con MediaSession
  • media2.widget.MediaControlView
    • Aspetto e design migliori
    • Contiene tutte le funzionalità di android.widget.MediaController
    • Consente di selezionare le tracce dei sottotitoli, la selezione della velocità di riproduzione e la modalità a schermo intero

Versione 1.0.0-rc02

22 agosto 2019

androidx.media2:media2-*:1.0.0-rc02 è stato rilasciato 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ù possibile chiamare setPlayer o setController tramite MediaControlView (MCV) quando MediaControlView appartiene a un VideoView

Correzioni di bug

  • MediaControlView: è possibile fare clic sui pulsanti Avanti e Indietro solo se sono presenti elementi multimediali successivi o precedenti.
  • MediaControlView: è stato risolto un problema di NullPointerException irregolare quando veniva richiamato onAttachedToWindow()
  • Il widget Media2 ora gestisce correttamente i metadati del nuovo elemento multimediale quando l'elemento multimediale corrente viene 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 senza problemi alla modalità di riproduzione in background.
  • È stata rimossa la dipendenza con la libreria Media2-player
  • onViewTypeChangedListener è stato aggiunto

Modifiche alle API

  • Cambiamento della visibilità da pubblica a protetta:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Rimosse:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Aggiunta:
    • 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

Vengono rilasciati 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. I commit inclusi in questa versione sono disponibili qui.

Modifiche alle 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'artefatto Guava completo, potresti riscontrare un conflitto di risoluzione delle dipendenze quando utilizzi determinate versioni del plug-in Android per Gradle. Se riscontri un errore Could not resolve all artifacts che interessa ListenableFuture, puoi aggirare temporaneamente il problema aggiungendo android.dependency.useConstraints=false alla configurazione della build del tuo progetto. Al momento stiamo lavorando a una soluzione permanente per il plug-in Android per Gradle che verrà rilasciato 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.
  • Sostituisci Guava AscoltaableFuture con implementazione Jetpack (aosp/968828)

Versione 1.0.0-beta01

7 maggio 2019

Vengono rilasciati 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. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Le raccolte sono suddivise in tre parti: media2-common, media2-player, media2-sessione
  • IllegalPointerException modificato in NullPointerException per gli argomenti null contrassegnati come @NonNull.

Modifiche alle API

  • Data di presentazione: MediaController.Builder
  • Sono stati aggiunti metodi setter per i campi facoltativi di FileMediaItem.Builder
  • MediaController e MediaBrowser possono inviare suggerimenti di connessione dell'applicazione a MediaSession, MediaSessionService o MediaLibraryService
  • Alcuni metodi vengono rinominati in modo da seguire le API di Android 10 Media2

Versione 1.0.0-alpha04

17 dicembre 2018

Modifiche alle API

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