Jetpack Media3 è il nuovo punto di riferimento per le librerie multimediali che consente alle app Android di mostrare esperienze audio e visive avanzate. Media3 offre un'architettura semplice con potenti personalizzazione, affidabilità e ottimizzazioni basate sulle capacità dei dispositivi per astrarre la complessità associata alla frammentazione.
Questo documento fornisce un'introduzione alle API chiave per implementare la riproduzione e la modifica di casi d'uso con Media3.
Componenti di riproduzione
Media3 offre diversi componenti chiave per i casi d'uso relativi alla riproduzione. Le classi che compongono questi componenti ti saranno familiari se hai lavorato con le precedenti librerie Android.
Il seguente diagramma mostra come questi componenti vengono combinati in una tipica app.
Il media player
Un media player è un componente della tua app che consente la riproduzione di file multimediali. In Media3, troverai:
Corso | Descrizione | Nota di implementazione |
---|---|---|
Player |
Player è un'interfaccia che definisce le funzionalità tradizionali di alto livello per un media player, come la riproduzione, la messa in pausa e la ricerca.
|
In Media3, l'interfaccia Player è un'API comune implementata o utilizzata da diversi componenti, ad esempio MediaSession e MediaController .
|
ExoPlayer |
ExoPlayer è l'implementazione predefinita dell'interfaccia Player in Media3.
|
Scopri di più su Media3 ExoPlayer
La sessione multimediale
Una sessione multimediale offre un modo universale di interagire con un media player. Ciò consente a un'app di pubblicizzare la riproduzione di contenuti multimediali a fonti esterne e di ricevere richieste di controllo della riproduzione da fonti esterne. In Media3, troverai:
Corso | Descrizione | Nota di implementazione |
---|---|---|
MediaSession |
Le sessioni multimediali consentono alla tua app di interagire con un audio o video player. Pubblicizzano all'esterno la riproduzione di contenuti multimediali 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 include una sessione multimediale e il relativo player associato in un servizio separato dal Activity principale dell'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 all'elemento Player sottostante
del MediaSession associato.
|
La classe MediaController implementa l'interfaccia Player , ma quando chiami un metodo il comando viene inviato alla MediaSession connessa. Le app client come l'Assistente Google possono utilizzare MediaController per controllare la riproduzione in una sessione collegata.
|
MediaLibraryService |
MediaLibraryService è simile a MediaSessionService , tranne per il fatto che include API aggiuntive per consentirti di pubblicare la tua raccolta di contenuti nelle app client.
|
|
MediaBrowser |
Il corso MediaBrowser consente all'utente di esplorare
la raccolta di contenuti di un'app multimediale e selezionare gli elementi da riprodurre.
|
La classe MediaBrowser implementa entrambe le interfacce MediaController e Player . Analogamente a MediaController , le app client come Android Auto in genere implementano MediaBrowser .
|
Scopri di più su MediaSession Media3
I componenti dell'interfaccia utente
Media3 fornisce componenti predefiniti dell'interfaccia utente per la visualizzazione dei video e il controllo della riproduzione.
Corso | Descrizione | Nota di implementazione |
---|---|---|
PlayerView |
Un valore predefinito View per mostrare i controlli di riproduzione e video.
|
Si connette a ExoPlayer , MediaController o a qualsiasi altro Player personalizzato.
|
Scopri di più sulla UI di Media3
Modifica dei componenti
Media3 include le API Transformer per casi d'uso di editing multimediale, tra cui:
- Elaborazione di 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 combinazione di più file di input
- Esportazione dell'output finale in un file
Corso | Descrizione | Nota di implementazione |
---|---|---|
Transformer |
Utilizza la classe Transformer per avviare e arrestare le trasformazioni e per verificare la presenza di aggiornamenti sull'avanzamento di una trasformazione in esecuzione.
|
|
Effects |
Un oggetto Effects è una raccolta di effetti audio e video
da applicare a un elemento multimediale.
|
|
EditedMediaItem |
Un EditedMediaItem rappresenta un elemento multimediale da elaborare e
le modifiche da applicare.
|
Puoi utilizzare ExoPlayer per visualizzare l'anteprima degli effetti aggiunti a un elemento multimediale prima di iniziare il processo di esportazione.
|
Scopri di più su Media3 Transformer
Video introduttivo
Guarda il video qui sotto per un'introduzione a Media3 da parte dei tecnici che l'hanno sviluppato.
Link utili
- Centro per gli sviluppatori di contenuti multimediali
ExoPlayer
documento- Guida alla migrazione
- AndroidX Media3 su GitHub
- Esempio di app per la sessione multimediale di Media3
- Esempio di app di Universal Android Music Player