TV Input Framework

Icona HAL di Android TV

L'Android TV Input Framework (TIF) semplifica la distribuzione di contenuti live su Android TV. L'Android TIF fornisce un'API standard per consentire ai produttori di creare moduli di input per controllare Android TV e consente la ricerca e i consigli della TV in diretta tramite i metadati pubblicati dall'input TV.

Il framework non mira a implementare standard TV o requisiti regionali, ma semplifica la conformità dei produttori di dispositivi agli standard di trasmissione TV digitale regionali senza necessità di implementazione. La documentazione in questa sezione potrebbe essere utile anche agli sviluppatori di app di terze parti che vogliono creare input TV personalizzati.

Componenti

L'implementazione di Android TV Input Framework include un gestore degli ingressi TV. Il TIF funziona con l'app TV, un'app di sistema che non può essere sostituita da un'app di terze parti, per accedere ai canali integrati e del sintonizzatore IP. L'app TV comunica con i moduli di input TV forniti dal produttore del dispositivo o da altre parti tramite TV Input Manager.

Il framework di input TV è costituito da:

  • Fornitore di servizi TV (com.android.providers.tv.TvProvider): un database di canali, programmi e autorizzazioni associate
  • App TV (com.android.tv.TvActivity): l'app che gestisce l'interazione dell'utente
  • TV Input Manager (android.media.tv.TvInputManager): consente agli ingressi TV di comunicare con l'app TV
  • Ingresso TV: un'app che rappresenta sintonizzatori e porte di ingresso fisici o virtuali
  • HAL di input TV (modulo tv_input): una definizione hardware che consente agli input TV di sistema di accedere all'hardware specifico della TV quando implementato
  • Controllo genitori: la tecnologia per consentire il blocco di canali e programmi
  • HDMI-CEC: la tecnologia che consente il controllo remoto di vari dispositivi tramite HDMI
  • Framework del sintonizzatore: un framework per l'ingresso TV con sintonizzatore integrato
  • MediaCas: un framework per l'accesso condizionale
  • Tuner Resource Manager: un servizio per gestire la risorsa hardware per l'input TV, MediaCas e l'input del sintonizzatore integrato

Questi componenti sono trattati in dettaglio di seguito. Consulta il seguente diagramma per una visualizzazione dettagliata dell'architettura di Android TV Input Framework.

Panoramica dell'architettura TIF di Android
Figura 1. Architettura di Android TV Input Framework (TIF)

Flow

Ecco come viene esercitata l'architettura:

  1. L'utente vede e interagisce con l'app TV, un'app di sistema che non può essere sostituita da un'app di terze parti.
  2. L'app TV mostra i contenuti AV dell'ingresso TV.
  3. L'app TV non può comunicare direttamente con gli ingressi TV. TV Input Manager identifica lo stato degli ingressi TV per l'app TV. Per ulteriori dettagli su queste limitazioni, consulta la sezione TV Input Manager di seguito.

Autorizzazioni

  • Solo signatureOrSystem TV Inputs e TV App hanno accesso completo al database del fornitore di servizi TV e sono in grado di ricevere KeyEvents.
  • Solo gli ingressi TV di sistema possono accedere all'HAL di ingresso TV tramite il servizio di gestione degli ingressi TV. Si accede agli ingressi TV in modo individuale tramite le sessioni di TV Input Manager.
  • Gli input TV di terze parti hanno accesso bloccato dal pacchetto al database del fornitore di servizi TV e possono leggere/scrivere solo nelle righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono visualizzare i propri contenuti o quelli degli ingressi TV passthrough di un produttore di dispositivi, come HDMI1. Non possono visualizzare contenuti da ingressi TV non passthrough, come un sintonizzatore integrato o IPTV.
  • L'autorizzazione TV_INPUT_HARDWARE per un'app di input TV hardware segnala al servizio di gestione dell'input TV di notificare al servizio di input TV all'avvio di chiamare il servizio di gestione dell'input TV e aggiungere i relativi input TV. Questa autorizzazione consente a un'app di input TV hardware di supportare più input TV per servizio di input TV, nonché di aggiungere e rimuovere dinamicamente gli input TV supportati.

Fornitore TV

Il database del fornitore di servizi TV memorizza i canali e i programmi degli ingressi TV. Il fornitore di servizi TV pubblica e gestisce anche le autorizzazioni associate in modo che gli ingressi TV possano visualizzare solo i propri record. Ad esempio, un ingresso TV specifico può visualizzare solo i canali e i programmi che ha fornito e non può accedere ai canali e ai programmi di altri ingressi TV.

Il fornitore di servizi TV mappa internamente il "genere di trasmissione" al "genere canonico". TV Gli input sono responsabili del riempimento del campo "genere di trasmissione" con il valore nello standard di trasmissione sottostante e il campo "genere canonico" verrà compilato automaticamente con il genere associato corretto da android.provider.TvContract.Genres. Ad esempio, con lo standard di trasmissione ATSC A/65 e il programma con genere 0x25 (ovvero "Sport"), l'input TV compilerà il campo "genere di trasmissione" con la stringa "Sport" e il fornitore di servizi TV compilerà il campo "genere canonico" con il valore mappato android.provider.TvContract.Genres.SPORTS.

Per una visualizzazione dettagliata del fornitore di servizi TV, consulta il diagramma riportato di seguito.

Android TV Provider
Figura 2. Android TV Provider

Solo le app nella partizione di sistema privilegiata possono leggere l'intero database del fornitore di servizi TV.

Gli ingressi TV passthrough non memorizzano canali e programmi.

Oltre ai campi standard per canali e programmi, il database del fornitore di servizi TV offre anche un campo di tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA, in ogni tabella che gli ingressi TV possono utilizzare per archiviare dati arbitrari. Questi dati BLOB possono includere informazioni personalizzate, come la frequenza del sintonizzatore associato, e possono essere forniti in un buffer di protocollo o in un altro formato. Un campo Ricercabile è disponibile per rendere alcuni canali non disponibili nella ricerca (ad esempio per soddisfare i requisiti specifici per paese per la protezione dei contenuti).

Esempi di campi del database

Il fornitore di servizi TV supporta i dati strutturati nelle tabelle dei canali (android.provider.TvContract.Channels) e dei programmi (android.provider.TvContract.Programs). Queste tabelle vengono compilate e a cui accedono gli input TV e le app di sistema come l'app TV. Queste tabelle hanno quattro tipi di campi:

  • Visualizzazione : i campi di visualizzazione contengono informazioni che le app potrebbero voler rendere visibili all'utente, come il nome (COLUMN_DISPLAY_NAME) o il numero (COLUMN_DISPLAY_NUMBER) di un canale o il titolo del programma visualizzato.
  • Metadati:sono presenti tre campi per l'identificazione dei contenuti, in base agli standard pertinenti, come l'ID stream di trasporto di un canale (COLUMN_TRANSPORT_STREAM_ID), l'ID rete originale (COLUMN_ORIGINAL_NETWORK_ID) e l'ID servizio (COLUMN_SERVICE_ID).
  • Dati interni: campi per l'utilizzo personalizzato degli ingressi TV.
    Alcuni campi, come COLUMN_INTERNAL_PROVIDER_DATA, sono campi BLOB personalizzabili in cui un input TV può memorizzare metadati arbitrari sul canale o sul programma.
  • Flag : i campi flag indicano se un canale deve essere limitato nella ricerca, nella navigazione o nella visualizzazione. Può essere impostata solo a livello di canale. Tutti i programmi rimandano all'impostazione del canale.
    • COLUMN_SEARCHABLE: la limitazione della ricerca da alcuni canali potrebbe essere un requisito in alcune regioni. COLUMN_SEARCHABLE = 0 significa che il canale non deve essere mostrato nei risultati di ricerca.
    • COLUMN_BROWSABLE: Visibile solo alle applicazioni di sistema. Limitazione della navigazione del canale da parte delle applicazioni. COLUMN_BROWSABLE = 0 significa che il canale non deve essere incluso nell'elenco dei canali.
    • COLUMN_LOCKED: Visibile solo alle applicazioni di sistema. Limitazione della visualizzazione del canale da parte di account non validi senza inserire il codice PIN. COLUMN_LOCKED = 1 significa che il canale deve essere protetto dal Controllo genitori.

Per un elenco più esaustivo dei campi, vedi android/frameworks/base/media/java/android/media/tv/TvContract.java

Autorizzazioni e controllo dell'accesso

Tutti i campi sono visibili a chiunque abbia accesso alla riga corrispondente. Nessun campo è direttamente accessibile agli utenti, che vedono solo ciò che viene visualizzato dalle app TV, dalle app di sistema o dagli ingressi TV.

  • Ogni riga ha PACKAGE_NAME, il pacchetto (app) proprietario di quella riga, selezionato su Query, Inserisci, Aggiorna tramite TvProvider.java. Un ingresso TV può accedere solo alle informazioni che ha scritto ed è isolato dalle informazioni fornite da altri ingressi TV.
  • Autorizzazioni READ e WRITE tramite AndroidManifest.xml (richiede il consenso dell'utente) per determinare i canali disponibili.
  • Solo le app signatureOrSystem possono acquisire l'autorizzazione ACCESS_ALL_EPG_DATA per accedere all'intero database.

Gestore ingressi TV

TV Input Manager fornisce un'API di sistema centrale al framework di input di Android TV. Gestisce l'interazione tra le app e gli ingressi TV e fornisce la funzionalità di Controllo genitori. Le sessioni di TV Input Manager devono essere create in modo univoco con gli ingressi TV. TV Input Manager consente l'accesso agli ingressi TV installati, in modo che le app possano:

  • Elenca gli ingressi TV e controllane lo stato
  • Creare sessioni e gestire gli ascoltatori

Per le sessioni, un ingresso TV può essere sintonizzato dall'app TV solo sugli URI che ha aggiunto al database del fornitore di servizi TV, ad eccezione degli ingressi TV passthrough che possono essere sintonizzati utilizzando TvContract.buildChannelUriForPassthroughInput(). Un ingresso TV può anche avere il volume impostato. Gli ingressi TV forniti e firmati dal produttore del dispositivo (app di firma) o da altre app installate nella partizione di sistema avranno accesso all'intero database dei fornitori di servizi TV. Questo accesso può essere utilizzato per creare app per sfogliare e cercare tutti i canali TV e i programmi disponibili.

Un'app può creare e registrare un TvInputCallback con android.media.tv.TvInputManager per essere richiamata in caso di modifica dello stato di un ingresso TV o in caso di aggiunta o rimozione di un ingresso TV. Ad esempio, un'app TV può reagire quando un ingresso TV viene disconnesso mostrandolo come disconnesso e impedendone la selezione.

TV Input Manager astrae la comunicazione tra l'app TV e gli ingressi TV. L'interfaccia standard di TV Input Manager e TV Input consente a più produttori di dispositivi di creare le proprie app TV, contribuendo al contempo a far funzionare tutti gli ingressi TV di terze parti su tutte le app TV.

Ingressi TV

Gli ingressi TV sono app per Android in quanto hanno un file AndroidManifest.xml e vengono installati (tramite Play, preinstallazione o sideload). Android TV supporta app di sistema preinstallate, app firmate dal produttore del dispositivo e ingressi TV di terze parti.

Alcuni input, come l'ingresso HDMI o l'ingresso del sintonizzatore integrato, possono essere forniti solo dal produttore, in quanto comunicano direttamente con l'hardware sottostante. Altri, come IPTV, place-shifting e STB esterni, possono essere forniti da terze parti come APK su Google Play Store. Una volta scaricata e installata, la nuova sorgente può essere selezionata all'interno dell'app TV.

Esempio di input passthrough

Ingresso di sistema Android TV
Figura 3. Input di sistema Android TV

In questo esempio, l'input TV fornito dal produttore del dispositivo è attendibile e ha accesso completo al fornitore di servizi TV. In quanto ingresso TV passthrough, non registra canali o programmi con il fornitore di servizi TV. Per ottenere l'URI utilizzato per fare riferimento all'input passthrough, utilizza il metodo dell'utilità buildChannelUriForPassthroughInput(String inputId) android.media.tv.TvContract. L'app TV comunica con TV Input Manager per raggiungere l'ingresso TV HDMI.

Esempio di sintonizzatore integrato

Ingresso sintonizzatore integrato di Android TV
Figura 4. Ingresso sintonizzatore integrato di Android TV

In questo esempio, l'input TV del sintonizzatore integrato fornito dal produttore del dispositivo è attendibile e ha accesso completo al fornitore di servizi TV.

Esempio di input di terze parti

Input di terze parti per Android TV
Figura 5. Input di terze parti di Android TV

In questo esempio, l'input TV STB esterno è fornito da una terza parte. Poiché l'ingresso TV non può accedere direttamente al feed video HDMI in entrata, deve passare tramite TV Input Manager e utilizzare l'ingresso TV HDMI fornito dal produttore del dispositivo.

Tramite TV Input Manager, l'input TV STB esterno può comunicare con l'input TV HDMI e chiedergli di mostrare il video su HDMI1. Pertanto, l'ingresso TV STB può controllare la TV mentre l'ingresso TV HDMI fornito dal produttore riproduce il video.

Esempio di picture in picture (PIP)

Android TV KeyEvents
Figura 6. Android TV KeyEvents

Il diagramma sopra mostra come i pulsanti di un telecomando vengono passati a un ingresso TV specifico per la visualizzazione Picture in Picture (PIP). Le pressioni dei tasti vengono interpretate dal driver hardware fornito dal produttore del dispositivo, che converte i codici di scansione hardware in codici chiave Android e li passa alla pipeline di input standard di Android. Le funzioni InputReader e InputDispatcher vengono utilizzate come KeyEvents. Questi a loro volta attivano eventi nell'app TV se è in primo piano.

Solo gli ingressi TV di sistema sono idonei a ricevere InputEvents e solo se dispongono dell'autorizzazione di sistema RECEIVE_INPUT_EVENT. L'input TV è responsabile della determinazione degli InputEvent da utilizzare e deve consentire all'app TV di gestire i tasti che non deve utilizzare.

L'app TV è responsabile di sapere quale ingresso TV di sistema è attivo, ovvero selezionato dall'utente, e di disambiguare gli intent KeyEvents in entrata e indirizzarli alla sessione corretta di TV Input Manager, chiamando dispatchInputEvent() per passare l'evento all'ingresso TV associato.

Esempio di input MHEG-5

Il seguente diagramma mostra una visualizzazione più dettagliata di come KeyEvents vengono instradati tramite Android TIF.

Esempio di pulsante rosso di Android TV
Figura 7. Esempio di pulsante rosso di Android TV

Mostra il flusso di un'app con pulsante rosso, comune in Europa per consentire agli utenti di accedere ad app interattive sui propri televisori. Un'app può essere distribuita tramite questo stream di trasporto. Quando viene selezionato, consente agli utenti di interagire con queste app di trasmissione. Ad esempio, potresti utilizzare queste app di trasmissione per accedere a pagine web correlate o risultati sportivi.

Consulta la sezione App di trasmissione per scoprire come interagiscono le app di trasmissione con l'app TV.

In questo esempio:

  1. L'app TV è in primo piano e riceve tutti i tasti.
  2. KeyEvents (ad es. il tasto rosso) viene passato all'ingresso TV attivo come InputEvents.
  3. L'input TV di sistema si integra con lo stack MHEG-5 e dispone dell'autorizzazione di sistema RECEIVE_INPUT_EVENT.
  4. Alla ricezione del codice di attivazione (ad es. il pulsante rosso), l'ingresso TV attiva l'app di trasmissione.
  5. L'input TV consuma KeyEvents come InputEvents e l'app di trasmissione è in primo piano e gestisce InputEvents fino alla chiusura.

Nota: gli ingressi TV di terze parti non ricevono mai chiavi.

HAL ingresso TV

L'HAL di input TV facilita lo sviluppo di input TV per accedere all'hardware specifico della TV. Come per altri HAL Android, TV Input HAL (tv_input) è disponibile nell'albero dei sorgenti AOSP e il fornitore sviluppa la sua implementazione.

Nota: a partire da Android 14, l'interfaccia HAL di input TV è definita utilizzando AIDL.

App TV

L'app TV di sistema presenta all'utente contenuti TV in diretta. Una TV di riferimento L'app (Live TV) viene fornita insieme alla piattaforma Android, che può essere utilizzata così com'è, personalizzata, estesa o sostituita dai produttori di dispositivi. Il codice sorgente è disponibile in Android Open Source Project e puoi iniziare a utilizzarlo nell'articolo App TV di riferimento.

I produttori di dispositivi possono estendere le proprie app TV per implementare funzionalità specifiche del produttore del dispositivo o del paese, ma ciò non rientra nell'ambito di TIF o dell'app TV di riferimento.

Come minimo, l'app TV di sistema deve gestire le seguenti attività:

Installazione e configurazione

  • Rilevare automaticamente gli ingressi TV
  • Consentire agli ingressi TV di avviare la configurazione dei canali
  • Controllare le impostazioni del Controllo genitori
  • Modifica canali

Visualizzazione

  • Accedere a tutti i canali TV e navigare tra loro
  • Accedere alla barra delle informazioni sui programmi TV
  • Visualizzare i dati della guida elettronica ai programmi (EPG)
  • Supportare più tracce audio e di sottotitoli
  • Fornisci la verifica del PIN del Controllo genitori
  • Consenti la sovrapposizione dell'interfaccia utente dell'ingresso TV per lo standard TV (HbbTV e così via)
  • Compilare i risultati di ricerca per canali e programmi TV
  • Mostra le schede di collegamento delle app
  • Supporta le API di timeshifting
  • Gestire la funzionalità DVR e supportare le API di registrazione TV

Questo insieme di funzionalità aumenterà in linea con le nuove versioni di Android in cui vengono estese le API TIF della piattaforma. CTS Verifier fornisce la copertura dei test di compatibilità.

Supporto degli ingressi TV di terze parti

Android TV fornisce API per sviluppatori per input TV di terze parti, consentendo alle app installate di fornire canali software nell'esperienza TV in diretta. Per garantire un'implementazione compatibile del dispositivo Android, l'app TV di sistema ha alcune responsabilità in merito alla visualizzazione di canali e ingressi TV di terze parti per l'utente. L'app TV in diretta di riferimento fornisce un'implementazione compatibile. Se sostituiscono l'app TV di sistema, i produttori di dispositivi devono assicurarsi che le proprie app offrano una compatibilità simile, per soddisfare le aspettative degli sviluppatori su tutti i dispositivi Android TV.

L'app TV di sistema deve mostrare gli input di terze parti insieme al servizio TV in diretta predefinito del dispositivo. La promessa delle API per sviluppatori è che gli utenti potranno trovare i canali (una volta installati) all'interno della loro esperienza TV standard.

È consentita la differenziazione visiva tra i canali integrati e quelli di terze parti, come definito nella sezione App TV della CDD di Android.

Le sezioni seguenti mostrano come l'applicazione TV in diretta soddisfa i requisiti CDD.

Nuova configurazione del canale

L'aggiunta di nuovi canali/input di terze parti inizia con l'utente che trova e installa un input TV da un application store, come Google Play.

Alcuni ingressi TV di terze parti aggiungono automaticamente i canali al database TvProvider. Tuttavia, la maggior parte fornisce un'attività di configurazione per consentire all'utente di configurare i propri canali, fornire i dettagli di accesso e altre azioni. L'app TV di sistema deve garantire che l'utente possa attivare questa attività di configurazione, motivo per cui il CDD richiede che gli input di terze parti siano azioni di navigazione minime dall'app TV principale.

L'app TV in diretta di riferimento fornisce il menu Fonti dei canali per accedere agli ingressi.

Vai alle Impostazioni
Figura 8. Vai a Impostazioni.

Vai a Origine canale in Impostazioni
Figura 9. Vai a Origini dei canali nelle Impostazioni.

Seleziona la fonte dall'elenco.
Figura 10. Seleziona la tua fonte dall'elenco.

Aggiungere canali dalla sorgente
Figura 11. Aggiungi canali dalla tua fonte.

Inoltre, dopo l'installazione di un nuovo TvInput, nella parte superiore del menu dell'app TV viene visualizzata una scheda di notifica per indirizzare l'utente direttamente alla configurazione:

Notifica che indica che sono disponibili nuove sorgenti di canali.
Figura 12. Notifica che indica che sono disponibili nuove sorgenti di canali.

Se l'utente esegue un'azione tramite la notifica, può scegliere di configurare le proprie fonti come mostrato nella Figura 10.

Consulta Definisci il servizio di input TV per le aspettative degli sviluppatori in questo ambito.

Personalizzare l'elenco canali

I produttori di dispositivi possono fornire un'interfaccia utente per nascondere determinati canali e consentire agli utenti di gestire le proprie guide elettroniche ai programmi. La TV in diretta include questa funzionalità.

Apri l'elenco dei canali in Impostazioni.
Figura 13. Apri l'elenco dei canali in Impostazioni.

Personalizza l'elenco canali.
Figura 14. Personalizza l'elenco dei canali.

EPG

Gli sviluppatori di input di terze parti devono avere la certezza che gli utenti possano navigare facilmente nei loro canali durante l'utilizzo generale, su tutti i dispositivi Android TV compatibili.

I canali provenienti da input di terze parti devono essere presentati come parte della Guida elettronica ai programmi (EPG) dell'esperienza TV in diretta standard del dispositivo. È possibile utilizzare la separazione visiva o categorie separate per i canali di terze parti (vedi la sezione App TV del CDD di Android) — l'importante è che gli utenti siano in grado di trovare i canali che hanno installato.

Per garantire la migliore esperienza utente, i produttori devono implementare l'app TV in modo da includere i risultati di ricerca per le richieste di ricerca globali. TV in diretta fornisce un'implementazione (vedi che fornisce risultati da input di terze parti (necessari per la compatibilità della piattaforma) e da input integrati.

Time shifting

Per i dispositivi con Android 6.0 e versioni successive, l'app TV deve supportare il framework Android API time-shifting. Inoltre, i produttori devono implementare i controlli di riproduzione nell'app TV, che consentono agli utenti di mettere in pausa, riprendere, riavvolgere e mandare avanti velocemente la riproduzione.

Per gli ingressi TV che supportano la registrazione differita, l'app TV deve mostrare i controlli di riproduzione.

Controlli di riproduzione
Figura 15. Controlli di riproduzione

DVR

Per i dispositivi con Android 7.0 e versioni successive, l'app TV deve supportare il framework Android API di registrazione TV per supportare, elencare e riprodurre i programmi registrati.

Ciò consente ai produttori di dispositivi di collegare i propri sottosistemi DVR a TIF e ridurre drasticamente lo sforzo di integrazione necessario per attivare o integrare la funzionalità DVR su un dispositivo TV. Consente inoltre a terze parti di fornire sistemi DVR aftermarket che possono essere collegati a un dispositivo Android TV.

Oltre a registrare i contenuti live, l'app TV gestisce anche i conflitti di risorse. Ad esempio, se il dispositivo ha due sintonizzatori, può registrare due programmi contemporaneamente. Se l'utente chiede di registrare tre partite, l'app TV deve gestire il conflitto e deve mostrare una notifica o chiedere all'utente di pianificare una priorità per queste richieste.

Le app TV possono anche implementare una logica più sofisticata, ad esempio chiedere a un utente se vuole registrare tutti gli episodi futuri di una serie quando richiede di registrarne uno.

Consulta il seguente diagramma per una visione di una possibile implementazione del DVR in Android TV.

Registrazione video digitale su Android TV
Figura 16. Registrazione video digitale su Android TV

  1. Il servizio di input TV comunica all'app TV il numero di sintonizzatori disponibili in modo che l'app TV possa gestire eventuali conflitti di risorse.
  2. L'app TV riceve una richiesta avviata dall'utente per registrare un programma TV.
  3. L'app TV memorizza la programmazione delle registrazioni nel suo database interno.
  4. Quando è il momento di registrare, l'app TV passa una richiesta di sintonizzazione sul canale associato alla registrazione.
  5. Il servizio di input TV riceve questa richiesta, risponde indicando se sono presenti risorse appropriate e sintonizza il canale.
  6. L'app TV passa quindi una richiesta di avvio della registrazione a TV Input Manager.
  7. Il servizio di input TV riceve questa richiesta e inizia la registrazione.
  8. Il servizio di input TV memorizza i dati video effettivi nel proprio spazio di archiviazione, che può essere uno spazio di archiviazione esterno o cloud.
  9. Quando è il momento di terminare la registrazione, l'app TV passa la richiesta di interruzione della registrazione al TV Input Manager.
  10. Una volta ricevuta la richiesta, il servizio di input TV interrompe la registrazione e aggiunge i metadati associati al fornitore di servizi TV in modo che l'app TV possa mostrare la registrazione agli utenti quando richiesto.

Per ulteriori informazioni sull'implementazione delle funzionalità di registrazione nel servizio di input TV, consulta questo articolo sulla registrazione TV.

Risorse utili

  • Il CDD di Android e le API per sviluppatori documentate sono i riferimenti definitivi.
  • CTS Verifier utilizza le API nell'ambito del programma di test di compatibilità. L'esecuzione di questo test su Live TV può essere un modo utile per visualizzare la Guida elettronica ai programmi (EPG), la ricerca, il Controllo genitori e altri requisiti nel contesto di input di terze parti.
  • Consulta la sezione Definisci il servizio di input TV per le aspettative degli sviluppatori in questo ambito.

Controllo genitori

Il Controllo genitori consente a un utente di bloccare canali e programmi indesiderati, ma di aggirare il blocco inserendo un codice PIN.

La responsabilità della funzionalità di Controllo genitori è condivisa tra l'app TV, il servizio TV Input Manager, il fornitore di servizi TV e l'input TV.

Il Controllo genitori è obbligatorio ed è coperto da CTS Verifier.

Diversi paesi hanno definito sistemi di classificazione che gli input TV possono utilizzare tramite l' API TVContentRating. Inoltre, gli ingressi TV possono registrare i propri sistemi di classificazione personalizzati, come dimostrato dal test CTS Verifier, che introduce una classificazione "fittizia". Per i paesi in cui esiste un sistema di classificazione standard, i produttori di dispositivi sono invitati a combinare il Controllo genitori del framework di input TV con qualsiasi altro meccanismo che potrebbero includere.

Fornitore di servizi TV

Ogni riga del canale ha un campo COLUMN_LOCKED che viene utilizzato per bloccare la visualizzazione di canali specifici senza l'inserimento di un codice PIN. Il campo Programma COLUMN_CONTENT_RATING è destinato alla visualizzazione e non viene utilizzato per applicare il Controllo genitori.

Gestore ingressi TV

TV Input Manager memorizza ogni TvContentRating bloccato e risponde a isRatingBlocked() per comunicare se i contenuti con la classificazione specificata devono essere bloccati.

Ingresso TV

L'input TV verifica se i contenuti attuali devono essere bloccati chiamando isRatingBlocked() in TV Input Manager quando la classificazione dei contenuti visualizzati è cambiata (in caso di cambio di programma o canale) o le impostazioni del Controllo genitori sono cambiate (su ACTION_BLOCKED_RATINGS_CHANGED e ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED). Se i contenuti devono essere bloccati, l'input TV disattiva l'audio e il video e comunica all'app TV che i contenuti attuali sono bloccati chiamando notifyContentBlocked(TvContentRating). Se i contenuti non devono essere bloccati, l'input TV attiva l'audio e il video e comunica all'app TV che i contenuti attuali sono consentiti chiamando notifyContentAllowed().

App TV

Per rispettare le API del Controllo genitori e quindi creare una piattaforma compatibile, l'app TV di sistema deve fornire agli utenti un modo per gestire il Controllo genitori, incluse le classificazioni personalizzate registrate da app specifiche.

L'app TV mostra una UI con codice PIN quando riceve una notifica da un ingresso TV che indica che i contenuti attuali sono bloccati o quando l'utente tenta di visualizzare un canale bloccato.

L'app TV non memorizza direttamente le impostazioni del Controllo genitori. Quando l'utente modifica le impostazioni del Controllo genitori, ogni TvContentRating bloccato viene memorizzato da TV Input Manager e i canali bloccati vengono memorizzati dal fornitore di servizi TV.

L'app TV deve dichiarare l'autorizzazione android.permission.MODIFY_PARENTAL_CONTROLS per modificare le impostazioni del Controllo genitori.

I produttori di dispositivi sono invitati a:

  • Esegui il test del controllo genitori di CTS Verifier sull'applicazione TV in diretta di riferimento per una dimostrazione dei requisiti di compatibilità.
  • Utilizza l'app TV in diretta come riferimento per la propria app TV: in particolare, consulta ContentRatingsManager e RatingSystemsFragment e come gestiscono le classificazioni personalizzate.

HDMI-CEC

HDMI-CEC consente a un dispositivo di controllare un altro, permettendo così a un singolo telecomando di controllare più elettrodomestici in un home theater. Viene utilizzato da Android TV per velocizzare la configurazione e consentire il controllo a distanza di vari ingressi TV tramite l'app TV centrale. Ad esempio, può cambiare ingresso, accendere o spegnere i dispositivi e altro ancora.

L'Android TIF implementa HDMI-CEC come servizio di controllo HDMI, in modo che i produttori di dispositivi debbano solo sviluppare driver di basso livello che interagiscono con l'HAL Android TV leggero, evitando una logica di business più complessa. Fornendo un'implementazione standard, Android cerca di mitigare i problemi di compatibilità riducendo le implementazioni frammentate e il supporto selettivo delle funzionalità. Il servizio di controllo HDMI utilizza i servizi Android esistenti, inclusi input e alimentazione.

Ciò significa che le implementazioni HDMI-CEC esistenti dovranno essere riprogettate per interoperare con l'Android TIF. Consigliamo che la piattaforma hardware contenga un microprocessore per ricevere l'accensione CEC e altri comandi.

Integrazione CEC su Android TV
Figura 17. Integrazione CEC su Android TV

  1. Il bus CEC riceve un comando dall'origine attualmente attiva per passare a un'altra origine.
  2. Il driver passa il comando all'HAL HDMI-CEC.
  3. L'HAL invia una notifica a tutti i ActiveSourceChangeListeners.
  4. Il servizio di controllo HDMI riceve una notifica della modifica della sorgente tramite ActiveSourceChangeListener.
  5. Il servizio TV Input Manager genera un intent per l'app TV per cambiare la sorgente.
  6. L'app TV crea quindi una sessione TV Input Manager per l'input TV a cui viene eseguito lo switch e chiama setMain in quella sessione.
  7. La sessione di gestione dell'input TV trasmette queste informazioni all'input TV HDMI.
  8. L'input TV HDMI richiede di impostare la superficie sideband.
  9. Il servizio TV Input Manager genera un comando di controllo del routing corrispondente al servizio di controllo HDMI quando la superficie è impostata.

Linee guida per l'integrazione con la TV

App di trasmissione

Poiché ogni paese ha requisiti specifici per le emittenti (MHEG, Teletext, HbbTV e altro ancora), i produttori sono tenuti a fornire le proprie soluzioni per l'app di trasmissione, ad esempio:

  • MHEG: stack nativo
  • Teletext: stack nativo
  • HbbTV: soluzione HbbTV di Vewd Software

Nella release Android L, Android TV si aspetta che i produttori di dispositivi utilizzino integratori di sistemi o le soluzioni Android per gli stack TV regionali, passino la superficie agli stack software TV o passino il codice chiave necessario per interagire con gli stack legacy.

Ecco come interagiscono l'app di trasmissione e l'app TV:

  1. L'app TV è in primo piano e riceve tutti i tasti.
  2. L'app TV passa i tasti (ad es. il tasto rosso) al dispositivo di ingresso TV.
  3. Il dispositivo di input TV si integra internamente con lo stack TV legacy.
  4. Alla ricezione di un codice di attivazione (ad es. il pulsante rosso), il dispositivo di input TV attiva le app di trasmissione.
  5. Un'app di trasmissione acquisisce il focus nell'app TV e gestisce le azioni dell'utente.

Per la ricerca/i consigli vocali, l'app di trasmissione potrebbe supportare la ricerca in-app per la ricerca vocale.