Introduzione a Jetpack Media3

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.

I diversi componenti di un'app multimediale che utilizza Media3 si collegano
  tra loro in diversi modi semplici grazie alla condivisione di interfacce
   e classi.
Figura 1: componenti dell'app multimediale

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 cui MediaSession e MediaController, ad esempio.
ExoPlayer ExoPlayer è l'implementazione predefinita dell'interfaccia Player in 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 MediaSession ha bisogno di un Player per eseguire i comandi e ottenere lo stato attuale.
MediaSessionService MediaSessionService contiene una sessione multimediale e il relativo player in un servizio separato dal Activity principale della tua app per facilitare la riproduzione in background.
MediaController La classe MediaController viene generalmente utilizzata per inviare comandi dall'esterno dell'app, ad esempio da altre app o dal sistema stesso. I comandi vengono inviati al Player sottostante dell'MediaSession associato. La classe MediaController implementa l'interfaccia Player, ma quando viene chiamato un metodo, MediaController invia il comando inviato al MediaSession connesso. App client come l'Assistente Google possono utilizzare MediaController per controllare la riproduzione in una sessione connessa.
MediaLibraryService Un MediaLibraryService è simile a un MediaSessionService, tranne per il fatto che include API aggiuntive per consentirti di pubblicare la tua libreria di contenuti nelle app client.
MediaBrowser La classe MediaBrowser consente all'utente di navigare nella raccolta di contenuti di un'app multimediale e selezionare gli elementi da riprodurre. La classe MediaBrowser implementa le interfacce MediaController e Player. Analogamente a MediaController, le app client come Android Auto in genere implementano MediaBrowser.

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 View predefinito per mostrare i controlli di riproduzione e il video. Si connette a ExoPlayer, MediaController o a qualsiasi altro Player personalizzato.
PlayerSurface Un elemento componibile che rappresenta un disegno dedicato Surface per 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 Transformer per 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 ExoPlayer per visualizzare l'anteprima degli effetti aggiunti a un elemento multimediale prima di avviare il processo di esportazione.
EditedMediaItem Un EditedMediaItem rappresenta 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.