Estendi la tua app multimediale ad Android TV

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

Creare app per TV

Le app per TV utilizzano la stessa struttura di quelle per smartphone e tablet. Questo approccio consente di creare nuove app per TV in base alle tue conoscenze attuali sulla creazione di app per Android oppure di estendere le app esistenti in modo che vengano eseguite anche sui dispositivi TV.

Tuttavia, il modello di interazione utente per la TV è sostanzialmente diverso da quello di smartphone e tablet. Per far sì che la tua app abbia successo sui dispositivi TV, devi progettare nuovi layout che possano essere compresi chiaramente da 3 metri di distanza e offrire una navigazione che funzioni solo con un pad direzionale e un pulsante di selezione.

Per maggiori informazioni su considerazioni come la gestione dei controller hardware della TV, la creazione dei layout per la TV e della navigazione per la TV, consulta la pagina Creare app TV.

Utilizzare Media3 ExoPlayer

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

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

Puoi personalizzare ed estendere ExoPlayer, che può essere aggiornato tramite gli aggiornamenti delle applicazioni del Play Store. Per ulteriori informazioni, consulta Media3 ExoPlayer.

Utilizzare Media3 MediaSession

Le sessioni multimediali offrono al sistema un modo universale per interagire con il player audio o video della tua app. Una delle caratteristiche principali che distingue Media3 dalle API multimediali precedenti è che non è più necessario utilizzare connettori tra i componenti.

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

Per saperne di più sulla creazione di un'app di riproduzione multimediale, consulta Creare un media player di base utilizzando ExoPlayer.

Per creare la migliore esperienza per gli utenti finali della tua app multimediale, devi implementare MediaSession. Per farlo, inizializza un Player e forniscilo a MediaSession.Builder come segue:

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 media player. Di conseguenza, non è necessario gestire manualmente la mappatura dal player alla sessione. In questo modo, gli utenti vedranno sempre informazioni aggiornate sui contenuti multimediali in riproduzione, anche nella scheda Now Playing.

Controllare e pubblicizzare la riproduzione

In Media3, il player predefinito è la classe ExoPlayer, che implementa l'interfaccia Player. La connessione della sessione multimediale al player consente a un'app di pubblicizzare la riproduzione di contenuti multimediali esternamente e di ricevere comandi di riproduzione da fonti esterne. La sessione multimediale delega questi comandi al player dell'app multimediale.

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

Per ulteriori informazioni sulla riproduzione, ad esempio su come personalizzare il comportamento dei comandi di riproduzione, consulta Controllare e pubblicizzare la riproduzione utilizzando MediaSession.

Evita interruzioni nella tua app

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

  • Riproduzione imprevista e continuata quando si spegne la TV o si cambia input. Ciò comporta anche un elevato consumo di energia per l'hardware della TV. Con MediaSession, la tua app può informare la piattaforma che sta riproducendo contenuti multimediali e la piattaforma può informare l'app che la riproduzione può essere interrotta.

  • La riproduzione della musica si interrompe in modo imprevisto quando esci dall'app o disattivi il display della TV. L'utilizzo delle API MediaSession consente di continuare la riproduzione in un servizio in background.

  • Interazione limitata con contenuti che impediscono agli utenti di controllare la riproduzione. Ad esempio, tornare all'app se è in corso la riproduzione di musica in background o se supportano 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 la TV, devi considerare i problemi di accessibilità, come favorire il coinvolgimento, come consentire agli utenti di trovare contenuti e come sviluppare giochi e servizi di input TV.

Accessibilità TV

Sebbene le tecnologie per la disabilità possano e aiutino gli utenti ipovedenti, è importante supportare l'accessibilità nei percorsi di scoperta dei contenuti per le app TV.

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

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

Best practice per aumentare il coinvolgimento su Google TV

Tutte le app realizzate 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 MediaSession di Media3.

Come riferimento, la tua app deve supportare Google Cast. Ti consente di estendere le tue app per Android, iOS e Chrome per attivare lo streaming audio e video su Android TV, nonché su dispositivi Chromecast e con l'assistente. Per saperne di più, consulta la documentazione di Google Cast.

Puoi anche aiutare gli utenti a:

  • Scopri i contenuti su più piattaforme offrendo un feed di azioni multimediali o integrando la funzionalità Cosa guardare.

  • Sfrutta le funzionalità vocali e il coinvolgimento supportando il collegamento dell'account e la sincronizzazione dei diritti, offrendo la trasmissione vocale e attivando Cast Connect.

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

Creare un framework per gli ingressi TV

La visione di programmi TV in diretta e di altri contenuti continui basati sui canali è una parte importante dell'esperienza TV. Gli utenti sono abituati a selezionare e guardare programmi sulla TV navigando tra i canali. Il framework di input TV crea canali per pubblicare contenuti video o musicali nella Guida ai programmi TV.

Il framework di input TV 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 da fonti software come video in streaming su internet. Per ulteriori informazioni, consulta la sezione Creare servizi di input TV.