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 ulteriori informazioni su considerazioni come la gestione dei controller hardware della TV, la creazione di layout per la TV e la creazione di navigazione per la TV, consulta Creare app per 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, aggiunge ulteriori comodità, come 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 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ù necessaria la presenza di 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 promuovere la riproduzione di contenuti multimediali all'esterno e di ricevere comandi di riproduzione da fonti esterne. La sessione multimediale delega questi comandi al player dell'app multimediale.

La sessione multimediale è fondamentale per controllare la riproduzione. Ti consente di instradare i comandi da sorgenti esterne al player che si occupa di riprodurre i contenuti media. I client esterni possono utilizzare un controller multimediale per emettere comandi di riproduzione alla tua app multimediale. Questi comandi 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.

Evitare interruzioni nell'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 i contenuti che impedisce agli utenti di controllare la riproduzione. Ad esempio, tornare all'app se è in riproduzione musica in background o supportare 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 prendere in considerazione i problemi di accessibilità, come aumentare il coinvolgimento, come consentire agli utenti di trovare contenuti e come creare 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 contribuisci a garantire 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 su ridimensionamento del testo, layout della tastiera e descrizioni audio, consulta le risorse per l'accessibilità.

Best practice per aumentare il coinvolgimento su Google TV

Tutte le app create 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 fornire un modo universale di interagire con un media player 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 la voce e il coinvolgimento supportando il collegamento degli account e la sincronizzazione dei diritti, offrendo il casting vocale e attivando Cast Connect.

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

Creare un framework per l'ingresso 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. TV Input Framework crea canali per la pubblicazione di contenuti video o musicali nella guida alla programmazione TV.

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