Jetpack Media3 è la nuova sede delle librerie multimediali che consentono alle app per Android di mostrare esperienze audio e visive avanzate. Media3 offre un'architettura semplice con personalizzazione, affidabilità e ottimizzazioni potenti in base alle funzionalità del dispositivo per astrarre la complessità derivante dalla frammentazione.
Questo documento fornisce un'introduzione alle API chiave per l'implementazione di casi d'uso di riproduzione e modifica con Media3.
Componenti di riproduzione
Media3 offre diversi componenti chiave per i casi d'uso della riproduzione. Le classi che compongono questi componenti ti saranno familiari se hai lavorato con le precedenti librerie multimediali Android.
Il seguente diagramma mostra come questi componenti si combinano in un'app tipica.
 
  Il media player
Un media player è un componente della tua app che consente la riproduzione di file multimediali. In Media3 troverai:
| Corso | Descrizione | Nota sull'implementazione | 
|---|---|---|
| Player | Playerè un'interfaccia che definisce le funzionalità tradizionali di alto livello
      per un media player, come la possibilità di riprodurre, mettere in pausa
      e cercare. | In Media3, l'interfaccia Playerè un'API comune implementata
      o utilizzata da diversi componenti, tra cuiMediaSessioneMediaController, ad esempio. | 
| ExoPlayer | ExoPlayerè l'implementazione predefinita dell'interfacciaPlayerin Media3. | 
Scopri di più su Media3 ExoPlayer
La sessione multimediale
Una sessione multimediale fornisce un modo universale per interagire con un media player. In questo modo un'app può pubblicizzare la riproduzione dei contenuti multimediali a origini esterne e ricevere richieste di controllo della riproduzione da origini esterne. In Media3 troverai:
| Corso | Descrizione | Nota sull'implementazione | 
|---|---|---|
| MediaSession | Le sessioni multimediali consentono all'app di interagire con un audio o un video player. Pubblicizzano la riproduzione di contenuti multimediali esternamente e ricevono comandi di riproduzione da fonti esterne. | In Media3, un MediaSessionha bisogno di unPlayerper
      eseguire i comandi e ottenere lo stato attuale. | 
| MediaSessionService | MediaSessionServicecontiene una sessione multimediale e il relativo
      player in un servizio separato dalActivityprincipale della tua app
      per facilitare la riproduzione in background. | |
| MediaController | La classe MediaControllerviene generalmente utilizzata per inviare comandi
      dall'esterno dell'app, ad esempio da altre app o dal sistema stesso.
      I comandi vengono inviati alPlayersottostante dell'MediaSessionassociato. | La classe MediaControllerimplementa l'interfacciaPlayer, ma quando viene chiamato un metodo,MediaControllerinvia il comando inviato alMediaSessionconnesso. App client come l'Assistente Google
      possono utilizzareMediaControllerper controllare la riproduzione in una sessione
      connessa. | 
| MediaLibraryService | Un MediaLibraryServiceè simile a unMediaSessionService, tranne per il fatto che include API aggiuntive
      per consentirti di pubblicare la tua libreria di contenuti nelle app client. | |
| MediaBrowser | La classe MediaBrowserconsente all'utente di navigare nella raccolta di contenuti di un'app multimediale e selezionare gli elementi da riprodurre. | La classe MediaBrowserimplementa le interfacceMediaControllerePlayer. Analogamente aMediaController, le app client come Android Auto in genere
      implementanoMediaBrowser. | 
Scopri di più su MediaSession di Media3
Componenti UI
Media3 fornisce componenti UI predefiniti per la visualizzazione di video e il controllo della riproduzione.
| Corso | Descrizione | Nota sull'implementazione | 
|---|---|---|
| PlayerView | Un Viewpredefinito per mostrare i controlli di riproduzione e il video. | Si connette a ExoPlayer,MediaControllero a qualsiasi
      altroPlayerpersonalizzato. | 
| PlayerSurface | Un elemento componibile che rappresenta un disegno dedicato Surfaceper mostrare il video. | Si connette a qualsiasi Player, ma non contiene controlli di riproduzione.
      Utilizzato solo per il rendering dei frame e può essere ridimensionato in base a vari
      tipi
      
      ContentScale. Questo e molti altri composable possono essere
      trovati nelle utilità della UI di Compose. | 
Scopri di più sulla UI di Media3
Modificare i componenti
Media3 include le API Transformer per i casi d'uso di modifica dei contenuti multimediali, tra cui:
- Elaborazione audio e video, ad esempio l'aggiunta di filtri ed effetti
- Gestione di formati speciali, come video HDR e video in slow motion
- Composizione, ad esempio la combinazione di più file di input
- Esportazione dell'output finale in un file
| Corso | Descrizione | Nota sull'implementazione | 
|---|---|---|
| Transformer | Utilizza la classe Transformerper avviare e interrompere le trasformazioni
      e per verificare gli aggiornamenti dello stato di avanzamento di una trasformazione in esecuzione. | |
| Effects | Un oggetto Effectsè una raccolta di effetti audio e video
      da applicare a un elemento multimediale. | Puoi utilizzare ExoPlayerper visualizzare l'anteprima degli effetti aggiunti a un elemento multimediale prima di avviare il processo di esportazione. | 
| EditedMediaItem | Un EditedMediaItemrappresenta un elemento multimediale da elaborare e
      le modifiche da applicare. | 
Scopri di più su Media3 Transformer
Video introduttivo
Guarda il video di seguito per un'introduzione a Media3 da parte degli ingegneri che lo hanno creato.
Link utili
- Media Developer Center
- ExoPlayerDocumenti
- Guida alla migrazione
- AndroidX Media3 su GitHub
- App di esempio di sessione multimediale Media3
- App di esempio Universal Android Music Player
