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 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.
Link utili
- Media Developer Center
ExoPlayer
Documenti- Guida alla migrazione
- AndroidX Media3 su GitHub
- App di esempio di sessione multimediale Media3
- App di esempio Universal Android Music Player