Estendi la tua app multimediale ad Android TV

Android offre un'esperienza utente ricca, ottimizzata per le app eseguite su dispositivi con schermi di grandi dimensioni, come i televisori ad alta definizione. Puoi ampliare il pubblico della tua app sviluppandola per Android TV. Questo documento fornisce indicazioni su come farlo in modo efficace.

Crea app TV

Le app TV utilizzano la stessa struttura di quelle per smartphone e tablet. Questo approccio consente di creare nuove app TV in base a ciò che già sai in merito allo sviluppo di app per Android, oppure di estendere le tue app esistenti in modo che vengano eseguite anche sui dispositivi TV.

Tuttavia, il modello di interazione dell'utente per la TV è sostanzialmente diverso da quello per telefoni e tablet. Per garantire il successo della tua app sui dispositivi TV, devi progettare nuovi layout che siano chiaramente comprensibili a una distanza di 3 metri e fornire una navigazione che funzioni solo con un d-pad e un pulsante di selezione.

Per ulteriori informazioni su considerazioni quali la gestione dei controller hardware per la TV, lo sviluppo di layout per la TV e la creazione della navigazione TV, consulta la pagina Creare app per la TV.

Usa Media3 ExoPlayer

Jetpack Media3 fornisce un'interfaccia del player che definisce funzionalità di base come la possibilità di riprodurre, mettere in pausa, cercare e visualizzare le informazioni sulle tracce. ExoPlayer è l'implementazione predefinita di questa interfaccia in Media3.

Rispetto all'API MediaPlayer di Android, offre ulteriori comodità quali il supporto di più protocolli di streaming, i renderer audio e video predefiniti e i componenti che gestiscono il buffering dei contenuti multimediali.

Puoi personalizzare ed estendere ExoPlayer, che può essere aggiornato tramite gli aggiornamenti dell'applicazione Play Store. Per ulteriori informazioni, consulta Media3 ExoPlayer.

Usa Media3 MediaSession

Le sessioni multimediali offrono al sistema un modo universale di interagire con il lettore audio o video dell'app. Una delle caratteristiche principali che distingue Media3 dalle API multimediali precedenti è che non sono più necessari connettori tra i componenti.

La nuova classe MediaSession prende qualsiasi classe che implementa l'interfaccia del player. Sia ExoPlayer che MediaController sono classi che implementano l'interfaccia. In questo modo, l'interazione tra i componenti è molto più semplice. Per ulteriori informazioni, consulta la sezione Interfaccia del player.

Per ulteriori informazioni sulla creazione di un'app di riproduzione di contenuti multimediali, consulta la sezione Creare un media player di base utilizzando ExoPlayer.

Per offrire un'esperienza ottimale per gli utenti finali della tua app multimediale, devi implementare MediaSession. Per farlo, inizializza Player e forniscilo a MediaSession.Builder in questo modo:

Kotlin

val player = ExoPlayer.Builder(context).build()
val mediaSession = MediaSession.Builder(context, player).build()

Java

ExoPlayer player = new ExoPlayer.Builder(context).build();
MediaSession mediaSession = new MediaSession.Builder(context, player).build();

Gestione automatica dello stato

La libreria Media3 aggiorna automaticamente la sessione multimediale utilizzando lo stato del player. Di conseguenza, non è necessario gestire manualmente la mappatura dal player alla sessione. Ciò contribuisce a garantire che gli utenti vedano sempre le informazioni aggiornate sui contenuti multimediali di riproduzione, inclusa la scheda Ora in riproduzione.

Controllare e pubblicizzare la riproduzione

In Media3, il player predefinito è la classe ExoPlayer, che implementa l'interfaccia Player. Se colleghi la sessione multimediale al player, un'app può pubblicizzare la riproduzione di contenuti multimediali esternamente e ricevere comandi di riproduzione da sorgenti esterne. La sessione multimediale delega questi comandi al player dell'app multimediale.

La sessione multimediale è la chiave per controllare la riproduzione. Ti consente di indirizzare i comandi da sorgenti esterne al player che si occupa di riprodurre i tuoi contenuti multimediali. I client esterni possono utilizzare un controller multimediale per inviare comandi di riproduzione alla tua app multimediale, che vengono ricevuti dalla sessione multimediale e poi delega i comandi al media player.

Per ulteriori informazioni sulla riproduzione, ad esempio su come personalizzare il comportamento del comando di riproduzione, consulta l'articolo Controllare e pubblicizzare la riproduzione utilizzando MediaSession.

Evitare interruzioni nella tua app

L'utilizzo di MediaSession ti consente di evitare interruzioni non necessarie, ad esempio:

  • Riproduzione imprevista e continua quando spegni la TV o cambi gli ingressi della TV. Questo causa anche un elevato consumo di energia per l'hardware TV. Con MediaSession, la tua app può comunicare alla piattaforma la riproduzione di contenuti multimediali e la piattaforma può comunicare all'app che la riproduzione può essere interrotta.

  • La riproduzione della musica si interrompe inaspettatamente quando esci dall'app o spegni il display della TV. L'utilizzo delle API MediaSession consente la riproduzione continua in un servizio in background.

  • Interazione limitata con i contenuti che impedisce agli utenti di controllare la riproduzione. Ad esempio, tornare all'app se è in corso la riproduzione di musica in background o se sono supportati i comandi vocali. Con MediaSession nella tua app, gli utenti possono usare i comandi vocali per cercare e saltare brani o puntate.

Ulteriori considerazioni

Quando estendi la tua app multimediale ad Android per TV, devi considerare i problemi di accessibilità, come promuovere il coinvolgimento, come consentire agli utenti di trovare contenuti e come creare giochi e servizi di input TV.

Accessibilità della TV

Anche se le tecnologie per la disabilità possono aiutare gli utenti ipovedenti, è importante supportare l'accessibilità nei percorsi di scoperta dei contenuti per le app per la TV.

Ad esempio, presta particolare attenzione a fornire indicazioni di navigazione e a etichettare correttamente gli elementi, oltre a garantire che le app per TV funzionino correttamente con le funzioni di accessibilità come TalkBack. Questi passaggi possono migliorare notevolmente l'esperienza degli utenti con problemi di vista.

Il primo passo per migliorare l'accessibilità è la consapevolezza. Per ulteriori informazioni su ridimensionamento del testo, layout di tastiera e descrizioni audio, consulta le risorse per l'accessibilità.

Best practice per promuovere il coinvolgimento su Google TV

Tutte le app sviluppate per Android TV funzionano sui dispositivi con Google TV. Per offrire la migliore esperienza utente su Google TV, ti consigliamo di applicare le seguenti best practice.

Devi utilizzare MediaSession per offrire un modo universale di interagire con un lettore audio o video. Per ulteriori informazioni su come implementare questa funzionalità, consulta Utilizzare Media3 MediaSession.

Come base, la tua app deve supportare Google Cast. Ti consente di estendere le app per Android, iOS e Chrome per consentire lo streaming audio e video sulle Android TV, nonché sui dispositivi Chromecast e con l'assistente. Per ulteriori informazioni, consulta la documentazione di Google Cast.

Puoi anche aiutare gli utenti a:

  • Scopri contenuti sulle varie piattaforme offrendo un feed delle azioni multimediali o integrando Guarda successivo.

  • Sfrutta la voce e il coinvolgimento supportando il collegamento dell'account e la sincronizzazione dei diritti, offrendo la trasmissione vocale e l'attivazione di Cast Connect.

  • Paga più facilmente integrando la fatturazione di Google Play e fornendo abbonamenti senza problemi.

Crea framework di input TV

Guardare programmi TV in diretta e altri contenuti continui basati sul canale sono una parte importante dell'esperienza TV. Gli utenti sono abituati a selezionare e guardare programmi sulla TV navigando tra i canali. TV Input Framework crea canali per pubblicare ideo o contenuti musicali nella Guida ai programmi TV.

TV Input Framework fornisce un metodo unificato per la ricezione e la riproduzione di contenuti video in diretta da origini hardware, come porte HDMI e sintonizzatori integrati, e origini software, come video riprodotti in streaming su internet. Per ulteriori informazioni, consulta la sezione Creare servizi di input TV.