Framework input TV

Icona HAL di Android TV

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

Il framework non mira a implementare standard TV o requisiti regionali, ma consente ai produttori di dispositivi di soddisfare più facilmente gli standard di trasmissione per la TV digitale regionali senza una nuova 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 del framework di input di Android TV include un gestore di input 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 del sintonizzatore IP e integrati. L'app TV comunica con i moduli di ingresso TV forniti dal produttore del dispositivo o da altre parti tramite il Gestore ingressi TV.

Il framework di input TV è costituito da:

  • Provider 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 ingresso TV (modulo tv_input): una definizione hardware che consente agli ingressi TV di sistema di accedere all'hardware specifico della TV quando è implementato
  • Controllo genitori: la tecnologia che consente di bloccare canali e programmi
  • HDMI-CEC: la tecnologia che consente il controllo remoto di vari dispositivi tramite HDMI
  • Tuner Framework: 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'ingresso TV, MediaCas e l'ingresso del sintonizzatore integrato

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

Panoramica dell'architettura di Android TIF
Figura 1. Architettura del framework di input Android TV (TIF)

Flusso

Ecco come viene praticata 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 dall'ingresso TV.
  3. L'app TV non può comunicare direttamente con gli ingressi TV. Il gestore degli ingressi TV identifica lo stato degli ingressi TV per l'app TV. Per ulteriori dettagli su queste limitazioni, consulta Gestione ingressi TV di seguito.

Autorizzazioni

  • Solo signatureOrSystem gli ingressi TV e l'app TV hanno accesso completo al database del fornitore di servizi TV e sono in grado di ricevere eventi KeyEvent.
  • Solo gli ingressi TV di sistema possono accedere all'HAL di ingresso TV tramite il servizio TV Input Manager. Gli ingressi TV sono accessibili singolarmente tramite le sessioni di TV Input Manager.
  • Gli input TV di terze parti hanno accesso bloccato in base al pacchetto al database del fornitore di servizi TV e possono eseguire operazioni di LETTURA/SCRITTURA solo sulle righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono mostrare i propri contenuti o quelli degli ingressi TV passthrough di un produttore di dispositivi, ad esempio HDMI1. Non possono visualizzare contenuti provenienti da ingressi TV non passthrough, come un sintonizzatore IPTV o integrato.
  • TV_INPUT_HARDWARE per un'app di ingresso TV hardware, indica al servizio TV Input Manager di notificare al servizio di ingresso TV all'avvio di chiamare il servizio TV Input Manager e aggiungere i relativi ingressi 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 dagli ingressi TV. Inoltre, il fornitore TV pubblica e gestisce le autorizzazioni associate in modo che gli ingressi TV possano visualizzare solo i propri record. Ad esempio, un ingresso TV specifico può vedere solo i canali e i programmi che ha fornito ed è vietato accedere ai canali e ai programmi di altri ingressi TV.

Il fornitore di servizi TV mappa internamente il "genere di trasmissione" al "genere canonico". Gli input TV sono responsabili della compilazione del campo "genere 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 un programma con genere 0x25 (che significa "Sport"), l'ingresso TV completerà il "genere di trasmissione" con la stringa "Sport" e il fornitore TV completerà il campo "genere canonico" con il valore mappato android.provider.TvContract.Genres.SPORTS.

Per una visione dettagliata del fornitore di servizi TV, vedi lo schema qui sotto.

Fornitore Android TV
Figura 2. Fornitore Android TV

Solo le app nella partizione di sistema con privilegi possono leggere l'intero database del provider 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 input TV possono utilizzare per memorizzare dati arbitrari. I 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. È disponibile un campo Ricercabile per rendere alcuni canali non disponibili nella Ricerca (ad esempio per soddisfare i requisiti specifici dei paesi 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 viene eseguito l'accesso da ingressi TV e 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 volere rendere visibili all'utente, ad esempio 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 identificare i contenuti, in base agli standard pertinenti, come l'ID stream di trasporto (COLUMN_TRANSPORT_STREAM_ID), l'ID rete originale (COLUMN_ORIGINAL_NETWORK_ID) e l'ID servizio (COLUMN_SERVICE_ID).
  • Dati interni: campi destinati all'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 relativi al canale o al programma.
  • Flag: i campi Flag indicano se un canale deve essere sottoposto a limitazioni per la ricerca, la visualizzazione o la navigazione. Questo valore può essere impostato solo a livello di canale. Tutti i programmi rispettano l'impostazione del canale.
    • COLUMN_SEARCHABLE: la limitazione della ricerca da alcuni canali potrebbe essere un requisito in determinate regioni. COLUMN_SEARCHABLE = 0 indica che il canale non deve essere mostrato nei risultati di ricerca.
    • COLUMN_BROWSABLE: visibile solo alle applicazioni di sistema. Impedisce la navigazione nel 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. Impedire la visualizzazione del canale da parte di account non validi senza inserire il codice PIN. COLUMN_LOCKED = 1 indica che il canale deve essere protetto dal Controllo genitori.

Per un elenco più completo dei campi, consulta 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 è accessibile direttamente agli utenti; vedono solo ciò che viene mostrato l'app TV, le app di sistema o gli ingressi TV.

  • Ogni riga ha PACKAGE_NAME, il pacchetto (app) proprietario della riga, controllato su Query, Insert, Update tramite TvProvider.java. Un ingresso TV può accedere solo alle informazioni che ha scritto e viene non segnato dalle informazioni fornite da altri ingressi TV.
  • Autorizzazioni di LETTURA e SCRITTURA 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 Android TV. Gestisce l'interazione tra le app e gli ingressi TV e offre la funzionalità di Controllo genitori. Le sessioni TV Input Manager devono essere create one-to-one con gli ingressi TV. TV Input Manager consente di accedere agli ingressi TV installati in modo che le app possano:

  • Elenca le prese della 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(). Anche l'ingresso TV potrebbe 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 del fornitore di servizi TV. Questo accesso può essere utilizzato per creare app per sfogliare e cercare tra tutti i programmi e i canali TV disponibili.

Un'app potrebbe creare e registrare un TvInputCallback con android.media.tv.TvInputManager da richiamare quando cambia di 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 è scollegato visualizzandolo come scollegato e impedendone la selezione.

Lo strumento Gestione ingressi TV 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 al funzionamento di tutti gli ingressi TV di terze parti su tutte le app TV.

Ingressi TV

Gli ingressi TV sono app per Android, nel senso che hanno un file AndroidManifest.xml e vengono installate (tramite Play, preinstallate o installate tramite sideload). Android TV supporta le app di sistema preinstallate, le app firmate dal produttore del dispositivo e gli ingressi TV di terze parti.

Alcuni ingressi, come l'ingresso HDMI o l'ingresso del sintonizzatore integrato, possono essere forniti solo dal produttore in quanto comunicano direttamente con l'hardware di base. Altre, come IPTV, place-shifting e STB esterni, possono essere forniti da terze parti come APK sul Google Play Store. Dopo averlo scaricato e installato, il nuovo ingresso potrà essere selezionato 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'ingresso 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 android.media.tv.TvContractmetodo di utilità buildChannelUriForPassthroughInput(String inputId). L'app TV comunica con il gestore dell'ingresso TV per raggiungere l'ingresso TV HDMI.

Esempio di sintonizzatore integrato

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

In questo esempio, l'ingresso 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

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

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

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

Esempio di Picture in picture (PIP)

Eventi KeyEvent di Android TV
Figura 6. Eventi KeyEvent di Android TV

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

Solo gli ingressi del sistema TV sono idonei a ricevere InputEvents e solo se hanno l'autorizzazione di sistema RECEIVE_INPUT_EVENT. L'ingresso TV è responsabile di determinare quali InputEvent consumare e deve consentire all'app TV di gestire le chiavi che non deve consumare.

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

Esempio di input MHEG-5

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

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

Raffigura il flusso di un'app con pulsante rosso, comune in Europa per consentire agli utenti di accedere alle app interattive sulle loro televisioni. Un'app può essere pubblicata tramite questo stream di trasporto. Quando viene fatto clic sul pulsante, gli utenti possono interagire con queste app di trasmissione. Ad esempio, potresti utilizzare queste app di trasmissione per accedere a pagine web o risultati sportivi correlati.

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

In questo esempio:

  1. L'app TV è attiva e riceve tutte le chiavi.
  2. KeyEvents (ad es.il pulsante rosso) viene passato alla TV attiva. Inserisci come InputEvents.
  3. L'ingresso TV di sistema si integra con lo stack MHEG-5 e dispone dell'autorizzazione di sistema RECEIVE_INPUT_EVENT.
  4. Al ricevimento del codice di attivazione (ad es. il tasto rosso), l'ingresso TV attiva l'app di trasmissione.
  5. L'ingresso TV consuma KeyEvents come InputEvents e l'app di trasmissione è attiva e gestisce InputEvents finché non viene ignorata.

Nota: le chiavi non vengono mai ricevute dagli ingressi TV di terze parti.

HAL ingresso TV

L'HAL di input TV facilita lo sviluppo di input TV per accedere all'hardware specifico della TV. Come con altri HAL per Android, TV Input HAL (tv_input) è disponibile nell'albero di origine AOSP e il fornitore sviluppa la propria 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 i contenuti TV in diretta. Insieme alla piattaforma Android, viene fornita un'app TV di riferimento (Live TV), che può essere utilizzata così com'è, personalizzata, estesa o sostituita dai produttori di dispositivi. Il codice sorgente è disponibile nell'Android Open Source Project e puoi iniziare a usarlo nell'articolo App di riferimento TV.

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

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

Configurazione e installazione

  • Rileva automaticamente gli ingressi TV
  • Consenti agli ingressi TV di avviare la configurazione del canale
  • Controllare le impostazioni del Controllo genitori
  • Modifica canali

Visualizzazione

  • Accesso a tutti i canali TV e navigazione
  • Accedere alla barra delle informazioni sui programmi TV
  • Visualizzare i dati della guida ai programmi elettronica (EPG)
  • Supporto di diverse tracce audio e di sottotitoli codificati
  • Fornire la verifica del PIN del Controllo genitori
  • Consenti l'overlay dell'interfaccia utente dell'ingresso TV per lo standard TV (HbbTV e così via)
  • Compilare i risultati di ricerca per canali e programmi TV
  • Mostrare le schede di collegamento delle app
  • Supporta le API di posticipazione
  • 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 per ingressi TV di terze parti

Android TV fornisce API per sviluppatori per input TV di terze parti, consentendo alle app installate di offrire canali software nell'esperienza TV in diretta. Per garantire un'implementazione compatibile di dispositivi Android, l'app di sistema TV ha alcune responsabilità per quanto riguarda l'esposizione all'utente di ingressi e canali TV di terze parti. L'app TV in diretta di riferimento fornisce un'implementazione compatibile. Se si sostituisce 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. Le API per sviluppatori promettono agli utenti di 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 relativa alle app TV del CDD di Android.

Le sezioni seguenti mostrano in che modo l'applicazione TV in diretta soddisfa i requisiti del CDD.

Configurazione del nuovo canale

L'aggiunta di nuovi ingressi/canali di terze parti inizia con la ricerca e l'installazione da parte dell'utente di un ingresso TV da un store di applicazioni, come Google Play.

Alcuni ingressi TV di terze parti aggiungono automaticamente i canali al database di TvProvider. Tuttavia, la maggior parte di queste app fornirà un'attività di configurazione per consentire all'utente di configurare i propri canali, fornire i dati 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 rispetto all'app TV principale.

L'app di riferimento TV in diretta fornisce il menu Origini canale per accedere agli ingressi.

Vai alle Impostazioni
Figura 8. Vai a Impostazioni.

Vai a Origine canale in Impostazioni
Figura 9. Vai a Origini canale in Impostazioni.

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

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

Inoltre, dopo l'installazione di un nuovo TvInput, viene visualizzata una scheda di notifica nella parte superiore del menu dell'app TV, che indirizza l'utente direttamente alla sezione Configurazione:

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

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

Consulta Definisci il tuo servizio di input TV per conoscere le aspettative degli sviluppatori in questa area.

Personalizzare l'elenco dei canali

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

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

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

EPG

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

I canali provenienti da input di terze parti devono essere presentati nell'EPG dell'esperienza TV in diretta standard del dispositivo. È possibile utilizzare la separazione visiva o categorie separate per i canali di terze parti (consulta la sezione App TV del CDD di Android). L'importante è che gli utenti riescano a trovare i canali che hanno installato.

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

Spostamento temporale

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

Per gli ingressi TV che supportano il time shifting, 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 le API di registrazione TV del framework Android per supportare, elencare e riprodurre i programmi registrati.

In questo modo, i produttori di dispositivi possono collegare i propri sottosistemi DVR a TIF e ridurre notevolmente lo sforzo di integrazione necessario per attivare o integrare la funzionalità DVR su un dispositivo TV. Inoltre, consente a terze parti di fornire sistemi DVR aftermarket che possono essere collegati a un dispositivo Android TV.

Oltre a registrare contenuti in diretta, l'app TV gestisce anche i conflitti relativi alle risorse. Ad esempio, se il dispositivo ha due sintonizzatori, può registrare due programmi contemporaneamente. Se l'utente chiede di registrare tre programmi, l'app TV deve gestire il conflitto e 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 tutte le puntate future di una serie quando richiede di registrare una puntata.

Consulta il seguente diagramma per una visualizzazione di una possibile implementazione del DVR su Android TV.

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

  1. Il servizio di input TV indica all'app TV quanti sintonizzatori sono disponibili in modo che 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 proprio database interno.
  4. Quando è il momento di registrare, l'app TV invia una richiesta di sintonizzazione sul canale associato alla registrazione.
  5. Il servizio di input TV riceve questa richiesta, risponde indicando se sono presenti o meno risorse appropriate e sintonizza il canale.
  6. L'app TV invia quindi una richiesta di avvio della registrazione al gestore dell'ingresso TV.
  7. Il servizio di ingresso TV riceve questa richiesta e avvia la registrazione.
  8. Il servizio di input TV archivia i dati video effettivi nel proprio spazio di archiviazione, che può essere archiviazione esterna o archiviazione sul cloud.
  9. Al momento di terminare la registrazione, l'app TV passa la richiesta di interruzione della registrazione al gestore dell'ingresso TV.
  10. Una volta ricevuta la richiesta, il servizio di input TV interrompe la registrazione e aggiunge i metadati associati al fornitore 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 esegue le API nell'ambito del programma di test di compatibilità. Eseguirlo con la TV in diretta può essere un modo utile per vedere i requisiti EPG, ricerca, Controllo genitori e altri nel contesto degli input di terze parti.
  • Consulta la sezione Definire il servizio di input TV per conoscere le aspettative degli sviluppatori in questo ambito.

Controllo genitori

Il Controllo genitori consente a un utente di bloccare i canali e i 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'ingresso TV.

Il Controllo genitori è obbligatorio ed è coperto dallo strumento di verifica CTS.

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 "falsa". 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 eventuali altri meccanismi che potrebbero includere.

Fornitore di servizi TV

Ogni riga dei canali ha un campo COLUMN_LOCKED che viene utilizzato per bloccare la visualizzazione di canali specifici senza inserire un codice PIN. Il campo ProgrammaCOLUMN_CONTENT_RATING è destinato alla visualizzazione e non viene utilizzato per applicare il Controllo genitori.

Gestione ingressi TV

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

Ingresso TV

L'ingresso TV controlla se i contenuti correnti 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 se sono cambiate le impostazioni del Controllo genitori (in ACTION_BLOCKED_RATINGS_CHANGED e ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED). Se i contenuti devono essere bloccati, l'ingresso TV disattiva l'audio e il video e comunica all'app TV che i contenuti correnti sono bloccati chiamando notifyContentBlocked(TvContentRating). Se i contenuti non devono essere bloccati, l'ingresso TV attiva l'audio e il video e comunica all'app TV che i contenuti correnti sono consentiti chiamando notifyContentAllowed().

App TV

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

L'app TV mostra un'interfaccia utente con il codice PIN quando viene informata da un ingresso TV che i contenuti correnti 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 archiviato da TV Input Manager e i canali bloccati vengono archiviati dal fornitore di servizi TV.

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

I produttori di dispositivi sono invitati a:

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

HDMI-CEC

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

Il TIF di Android 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 la logica di business più complessa. Fornendo un'implementazione standard, Android cerca di ridurre 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 ingresso e alimentazione.

Ciò significa che le implementazioni HDMI-CEC esistenti dovranno essere riprogettate per interoperare con il TIF di Android. 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'origine diversa.
  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 viene informato della modifica della sorgente tramite ActiveSourceChangeListener.
  5. Il servizio TV Input Manager genera un'intenzione per l'app TV per cambiare la sorgente.
  6. L'app TV crea quindi una sessione del gestore degli ingressi TV per l'ingresso TV a cui viene effettuato il passaggio e chiama setMain in quella sessione.
  7. La sessione di gestione dell'ingresso TV trasmette queste informazioni all'ingresso TV HDMI.
  8. L'ingresso HDMI della TV richiede di impostare la superficie del sideband.
  9. Il servizio TV Input Manager genera un comando di controllo del routing corrispondente al servizio HDMI Control Service quando la superficie è impostata.

Linee guida per l'integrazione TV

App di trasmissione

Poiché ogni paese ha requisiti specifici per le trasmissioni (MHEG, Teletext, HbbTV e altri), i produttori devono 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 gli integratori di sistemi o le soluzioni Android per gli stack TV regionali, trasmettano la piattaforma agli stack software TV o trasmettano il codice chiave necessario per interagire con gli stack precedenti.

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

  1. L'app TV è attiva e riceve tutte le chiavi.
  2. L'app TV passa i tasti (ad es. il pulsante rosso) al dispositivo di ingresso TV.
  3. Il dispositivo di ingresso TV si integra internamente con lo stack TV precedente.
  4. Alla ricezione di un codice di attivazione (ad es. un 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 vocale/i consigli, l'app di trasmissione potrebbe supportare la ricerca in-app per la ricerca vocale.