Quadro di ingresso TV

Icona HAL di Android TV

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

Il quadro non mira a implementare gli standard TV oi requisiti regionali, ma rende più facile per i produttori di dispositivi soddisfare gli standard regionali di trasmissione della TV digitale senza re-implementazione. La documentazione in questa sezione potrebbe essere utile anche per gli sviluppatori di app di terze parti che desiderano creare ingressi TV personalizzati.

Componenti

L'implementazione di Android TV Input Framework include un TV Input Manager. 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 al sintonizzatore IP. L'app TV comunica con i moduli di ingresso TV forniti dal produttore del dispositivo o da altre parti tramite TV Input Manager.

Il quadro 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 fisici o virtuali e porte di ingresso
  • Ingresso TV HAL (modulo tv_input ): una definizione hardware che consente agli ingressi TV del sistema di accedere all'hardware specifico della TV una volta implementato
  • Parental Control: la tecnologia per consentire il blocco di canali e programmi
  • HDMI-CEC: la tecnologia per consentire il controllo remoto di vari dispositivi tramite HDMI
  • Tuner Framework: un framework per l'input TV con sintonizzatore integrato
  • MediaCas: un framework per l'accesso condizionato
  • Tuner Resource Manager: un servizio per gestire la risorsa hardware per l'input TV, MediaCas e Built-in-Tuner input

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

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

Fluire

Ecco come si esercita 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 visualizza il contenuto AV dall'ingresso TV.
  3. L'app TV non può parlare direttamente con gli ingressi TV. TV Input Manager identifica lo stato degli ingressi TV per l'app TV. Per ulteriori dettagli su queste limitazioni, vedere Gestione ingresso TV di seguito.

Permessi

  • Solo gli ingressi TV signatureOrSystem e l'app TV hanno accesso completo al database del provider TV e sono in grado di ricevere KeyEvents.
  • Solo gli ingressi TV del sistema possono accedere all'ingresso TV HAL tramite il servizio TV Input Manager. Gli ingressi TV sono accessibili uno a uno tramite le sessioni di TV Input Manager.
  • Gli ingressi TV di terze parti hanno accesso protetto dal pacchetto al database del provider TV e possono LETTURA/SCRITTURA solo sulle righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono visualizzare i propri contenuti o contenuti dagli ingressi TV passthrough di un produttore di dispositivi, come HDMI1. Non possono visualizzare il contenuto da ingressi TV non passthrough, come un sintonizzatore integrato o IPTV.
  • Autorizzazione TV_INPUT_HARDWARE per un'app hardware TV Input, segnala al servizio TV Input Manager di notificare al servizio TV Input all'avvio di chiamare il servizio TV Input Manager e aggiungere i suoi ingressi TV. Questa autorizzazione consente a un'app di input TV hardware di supportare più input TV per servizio di input TV, oltre a essere in grado di aggiungere e rimuovere dinamicamente i relativi input TV supportati.

Fornitore televisivo

Il database del provider TV memorizza i canali e i programmi degli ingressi TV. Il provider TV pubblica e gestisce anche le autorizzazioni associate in modo che gli ingressi TV possano vedere solo i propri record. Ad esempio, un ingresso TV specifico può vedere solo i canali ei programmi che ha fornito ed è vietato accedere a canali e programmi di altri ingressi TV.

Il provider TV mappa internamente il "genere di trasmissione" al "genere canonico". Gli ingressi TV sono responsabili della compilazione del "genere di trasmissione" con il valore nello standard di trasmissione sottostante e il campo "genere canonico" verrà automaticamente popolato 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 (che significa "Sport"), l'Ingresso TV popolerà il "genere di trasmissione" con la stringa "Sport" e il Provider TV compilerà il campo "genere canonico" con il valore mappato android.provider.TvContract.Genres.SPORTS .

Vedere il diagramma seguente per una vista dettagliata del provider TV.

Provider Android TV
Figura 2. Provider Android TV

Solo le app nella partizione di sistema privilegiata 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 provider TV offre anche un campo di tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA , in ogni tabella che gli ingressi TV possono utilizzare per memorizzare dati arbitrari. Tali 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 non disponibili alcuni canali nella ricerca (ad esempio per soddisfare i requisiti specifici del paese per la protezione dei contenuti).

Esempi di campi di database

Il provider TV supporta i dati strutturati nelle tabelle dei canali ( android.provider.TvContract.Channels ) e dei programmi ( android.provider.TvContract.Programs ). Queste tabelle sono popolate e accessibili 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 voler rendere visibili all'utente, come il nome di un canale ( COLUMN_DISPLAY_NAME ) o il numero ( COLUMN_DISPLAY_NUMBER ) o il titolo del programma visualizzato.
  • Metadati: esistono tre campi per identificare il contenuto, in base agli standard pertinenti, come l'ID flusso 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'uso personalizzato degli ingressi TV.
    Alcuni campi, come COLUMN_INTERNAL_PROVIDER_DATA , sono campi BLOB personalizzabili in cui un ingresso TV può memorizzare metadati arbitrari sul proprio canale o programma.
  • Contrassegno: i campi contrassegno indicano se un canale deve essere limitato alla ricerca, alla navigazione o alla visualizzazione. Questo può essere impostato solo a livello di canale. Tutti i programmi rinviano all'impostazione del canale.
    • COLUMN_SEARCHABLE : limitare la ricerca da alcuni canali potrebbe essere un requisito in alcune regioni. COLUMN_SEARCHABLE = 0 significa che il canale non deve essere esposto 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 l'inserimento del codice PIN. COLUMN_LOCKED = 1 significa che il canale deve essere protetto dal controllo genitori.

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

Permessi e controllo accessi

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

  • Ogni riga ha PACKAGE_NAME , il pacchetto (app) che possiede quella riga, controllato 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 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 ingresso TV

TV Input Manager fornisce un'API di sistema centrale all'Android TV Input Framework. Arbitra l'interazione tra app e ingressi TV e fornisce funzionalità di controllo parentale. Le sessioni di TV Input Manager devono essere create uno a uno con gli ingressi TV. TV Input Manager consente l'accesso agli ingressi TV installati, quindi le app possono:

  • Elenca gli ingressi TV e controlla il loro stato
  • Crea sessioni e gestisci gli ascoltatori

Per le sessioni, un ingresso TV può essere sintonizzato dall'app TV solo sugli URI aggiunti al database del provider 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 altre app installate nella partizione di sistema avranno accesso all'intero database del provider TV. Questo accesso può essere utilizzato per creare app per navigare e cercare tra tutti i canali e i programmi TV disponibili.

Un'app può creare e registrare un TvInputCallback con android.media.tv.TvInputManager per essere richiamato al cambio di stato di un ingresso TV o all'aggiunta o rimozione di un ingresso TV. Ad esempio, un'app TV può reagire quando un ingresso TV viene disconnesso visualizzandolo come disconnesso e impedendone la selezione.

Il TV Input Manager estrae 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 mentre aiuta tutti gli ingressi TV di terze parti a funzionare su tutte le app TV.

Ingressi TV

Gli ingressi TV sono app Android nel senso che hanno un AndroidManifest.xml e sono installati (tramite Play, preinstallati o caricati lateralmente). Android TV supporta app di sistema preinstallate, app firmate dal produttore del dispositivo e ingressi TV di terze parti.

Alcuni ingressi, come l'ingresso HDMI o l'ingresso del sintonizzatore integrato, possono essere forniti solo dal produttore poiché parlano direttamente con l'hardware sottostante. Altri, come IPTV, place-shifting e STB esterno, possono essere forniti da terze parti come APK su Google Play Store. Una volta scaricato e installato, il nuovo ingresso può essere selezionato all'interno dell'app TV.

Esempio di input passante

Ingresso sistema Android TV
Figura 3. Ingresso del sistema Android TV

In questo esempio, l'ingresso TV fornito dal produttore del dispositivo è attendibile e ha accesso completo al provider TV. Come ingresso TV passthrough, non registra alcun canale o programma con il provider TV. Per ottenere l'URI usato per fare riferimento all'input passthrough, utilizzare il metodo di utilità android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . L'app TV comunica con TV Input Manager per raggiungere l'ingresso TV HDMI.

Esempio di sintonizzatore integrato

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

In questo esempio, l'ingresso TV del sintonizzatore integrato fornito dal produttore del dispositivo è affidabile e ha accesso completo al provider TV.

Esempio di input di terze parti

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

In questo esempio, l'ingresso TV STB esterno è fornito da terzi. Poiché tale ingresso TV non può accedere direttamente al feed video HDMI in arrivo, deve passare attraverso Gestione ingresso TV e utilizzare l'ingresso TV HDMI fornito dal produttore del dispositivo.

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

Esempio Picture in Picture (PIP).

Android TV KeyEvents
Figura 6. KeyEvents di Android TV

Il diagramma sopra mostra come i pulsanti di un telecomando vengono passati a un ingresso TV specifico per la visualizzazione dell'immagine nell'immagine (PIP). Tali pressioni di pulsanti vengono interpretate dal driver hardware fornito dal produttore del dispositivo, convertendo i codici di scansione hardware in codici chiave Android e passandoli alla pipeline di input Android standard InputReader e InputDispatcher funzioni come KeyEvents . Questi a loro volta attivano eventi sull'app TV se è a fuoco.

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 di determinare quali InputEvents consumare e dovrebbe consentire all'app TV di gestire le chiavi che non deve consumare.

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

Esempio di ingresso MHEG-5

Il diagramma seguente mostra una visualizzazione più dettagliata del modo in cui i KeyEvents vengono instradati tramite il TIF Android.

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

Descrive il flusso di un'app con pulsante rosso, comune in Europa per consentire agli utenti di accedere ad app interattive sui loro televisori. Un'app può essere consegnata su questo flusso di trasporto. Quando si fa clic sul pulsante, consente agli utenti di 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 come le app di trasmissione interagiscono con l'app TV.

In questo esempio:

  1. L'app TV è a fuoco e riceve tutte le chiavi.
  2. KeyEvents (ad es. il pulsante rosso) viene passato all'ingresso TV attivo 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. Alla ricezione del codice chiave di attivazione (es. pulsante rosso), l'ingresso TV attiva l'app di trasmissione.
  5. L'input TV utilizza KeyEvents come InputEvents e l'app di trasmissione è il focus e gestisce InputEvents fino a quando non viene eliminata.

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

Ingresso TV HAL

L'ingresso TV HAL aiuta lo sviluppo di ingressi TV per accedere all'hardware specifico della TV. Come con altri HAL Android, TV Input HAL ( tv_input ) è disponibile nell'albero dei sorgenti AOSP e il fornitore ne sviluppa l'implementazione.

App TV

L'app TV di sistema presenta all'utente 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 nel progetto Open Source Android e puoi iniziare con esso nell'articolo dell'app TV di riferimento .

I produttori di dispositivi possono estendere le loro app TV per implementare funzionalità specifiche del produttore del dispositivo o del paese, tuttavia 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

  • Rileva automaticamente gli ingressi TV
  • Consenti agli ingressi TV di avviare la configurazione del canale
  • Controlla le impostazioni dei genitori
  • Modifica i canali

Visualizzazione

  • Accedi e naviga in tutti i canali TV
  • Accedere alla barra delle informazioni sui programmi TV
  • Visualizza i dati della Guida alla programmazione elettronica (EPG).
  • Supporta più tracce audio e sottotitoli
  • Fornire la sfida del PIN di controllo parentale
  • Consenti sovrapposizione interfaccia utente ingresso TV per standard TV (HbbTV, ecc.)
  • Popolare i risultati di ricerca per canali e programmi TV
  • Visualizza le schede di collegamento delle app
  • Supporta le API timeshifting
  • Gestisci la funzionalità DVR e supporta le API di registrazione TV

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

Supporto per ingressi TV di terze parti

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

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

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

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

Nuova configurazione del canale

L'aggiunta di nuovi ingressi/canali di terze parti inizia con l'utente che trova e installa un ingresso TV da un negozio di applicazioni, come Google Play.

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

L'app Live TV di riferimento fornisce il menu Sorgenti canale per l'accesso agli ingressi.

Vai alle impostazioni
Figura 8. Vai a Impostazioni .

Vai a Sorgente canale in Impostazioni
Figura 9. Vai a Sorgenti canale in Impostazioni.

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

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

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

Notifica che mostra che sono disponibili nuove sorgenti di canale.
Figura 12. La notifica che mostra la disponibilità di nuove sorgenti di canale.

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

Vedere Definire il servizio di input TV per le aspettative degli sviluppatori in quest'area.

Personalizza l'elenco dei canali

I produttori di dispositivi possono fornire un'interfaccia utente per nascondere determinati canali e consentire agli utenti di gestire i propri EPG. La TV in diretta include questa struttura.

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

Personalizza il tuo elenco di canali.
Figura 14. Personalizza il tuo elenco di canali.

EPG

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

I canali provenienti da ingressi di terze parti devono essere presentati come parte dell'EPG standard dell'esperienza TV in diretta del dispositivo. È possibile utilizzare la separazione visiva o categorie separate per i canali di terze parti (consultare la sezione dell'app TV del CDD di Android): l'importante è che gli utenti siano in grado di trovare i canali che hanno installato.

I produttori devono implementare l'app TV per includere i risultati di ricerca per le richieste di ricerca globali al fine di garantire la migliore esperienza utente. Live TV fornisce un'implementazione (vedi com.android.tv.search.TvProviderSearch ) che fornisce risultati da input di terze parti (necessari per la compatibilità della piattaforma) e input integrati.

Tempo di spostamento

Per i dispositivi con Android 6.0 e versioni successive, l'app TV deve supportare le API di spostamento del tempo del framework Android . Inoltre, i produttori devono implementare i controlli di riproduzione nell'app TV, che consentono agli utenti di mettere in pausa, riprendere, riavvolgere e avanzare rapidamente la riproduzione.

Per gli ingressi TV che supportano il time shift, l'app TV deve visualizzare 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.

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

Oltre alla registrazione di contenuti live, l'app TV gestisce anche i conflitti di risorse. Ad esempio, se il dispositivo dispone di due sintonizzatori, può registrare due programmi contemporaneamente. Se l'utente chiede di registrarne tre, l'app TV deve gestire il conflitto e dovrebbe visualizzare una notifica o richiedere che l'utente pianifichi una priorità per queste richieste.

Le app TV possono anche implementare logiche più sofisticate come chiedere a un utente se desidera registrare tutti gli episodi futuri di una serie quando richiede di registrare un episodio.

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

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

  1. Il servizio di input TV indica all'app TV quanti sintonizzatori sono disponibili in modo che l'app TV possa gestire possibili conflitti di risorse.
  2. L'app TV riceve una richiesta avviata dall'utente per registrare un programma TV.
  3. L'app TV memorizza il programma di registrazione nel proprio database interno.
  4. Quando è il momento di registrare, l'app TV trasmette una richiesta per sintonizzarsi sul canale associato alla registrazione.
  5. Il servizio di input TV riceve questa richiesta, risponde indicando se sono presenti o meno risorse appropriate e si sintonizza sul canale.
  6. Quindi l'app TV trasmette una richiesta per avviare la registrazione a TV Input Manager.
  7. Il servizio di ingresso TV riceve questa richiesta e avvia la registrazione.
  8. Il servizio di ingresso TV memorizza i dati video effettivi nella sua memoria, che può essere una memoria esterna o una memoria cloud.
  9. Quando è ora di terminare la registrazione, l'app TV trasmette la richiesta di interruzione della registrazione a TV Input Manager.
  10. Una volta ricevuta la richiesta, il servizio di input TV interrompe la registrazione e aggiunge i metadati associati al provider TV in modo che l'app TV possa mostrare la registrazione agli utenti quando richiesto.

Per ulteriori informazioni sull'implementazione delle funzioni di registrazione nel servizio di ingresso TV, vedere questo articolo sulla registrazione TV .

Risorse utili

  • Il CDD Android e le API per sviluppatori documentate sono i riferimenti definitivi.
  • CTS Verifier esercita le API come parte del programma di test di compatibilità. L'esecuzione di questo su Live TV può essere un modo utile per vedere l'EPG, la ricerca, il controllo genitori e altri requisiti nel contesto di input di terze parti.
  • Vedere Definire il servizio di input TV per le aspettative degli sviluppatori in quest'area.

Controllo dei genitori

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

La responsabilità per la funzionalità di controllo parentale è condivisa tra l'app TV, il servizio TV Input Manager, il provider TV e l'ingresso TV.

Il controllo parentale è obbligatorio ed è coperto da CTS Verifier.

Numerosi paesi hanno definito sistemi di classificazione che gli ingressi 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 incoraggiati a combinare il TV Input Framework Parental Control con qualsiasi altro meccanismo che potrebbero includere.

Fornitore televisivo

Ogni riga di canale ha un campo COLUMN_LOCKED che viene utilizzato per bloccare la visualizzazione di canali specifici senza inserire un codice PIN. Il campo del programma COLUMN_CONTENT_RATING è destinato alla visualizzazione e non viene utilizzato per imporre il controllo parentale.

Gestore ingresso TV

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

Ingresso TV

L'ingresso TV controlla se il contenuto corrente deve essere bloccato chiamando isRatingBlocked() su Gestione ingresso TV quando la classificazione del contenuto visualizzato è cambiata (al 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 il contenuto deve essere bloccato, l'ingresso TV disabilita l'audio e il video e notifica all'app TV che il contenuto corrente è bloccato chiamando notifyContentBlocked(TvContentRating) . Se il contenuto non deve essere bloccato, l'ingresso TV abilita audio e video e notifica all'app TV che il contenuto corrente è consentito chiamando notifyContentAllowed() .

App TV

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

L'app TV mostra un'interfaccia utente con codice PIN quando viene notificata da un ingresso TV che il contenuto corrente è bloccato 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 provider 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 incoraggiati a:

  • Esercitare il test di controllo parentale di CTS Verifier rispetto all'applicazione TV in diretta di riferimento per una dimostrazione dei requisiti di compatibilità.
  • Utilizzare l'app Live TV come riferimento per la propria app TV: in particolare vedere la fonte ContentRatingsManager e RatingSystemsFragment e come gestiscono le valutazioni personalizzate.

HDMI-CEC

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

Android TIF implementa HDMI-CEC come servizio di controllo HDMI in modo che i produttori di dispositivi debbano semplicemente sviluppare driver di basso livello che interagiscono con il leggero Android TV HAL, saltando logiche di business più complesse. Nel fornire 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 interagire con il TIF Android. Si consiglia 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 dalla sorgente attualmente attiva per passare a un'altra sorgente.
  2. Il driver passa il comando all'HAL HDMI-CEC.
  3. L'HAL notifica tutti gli 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 di cambiare la sorgente.
  6. L'app TV crea quindi una sessione TV Input Manager per l'ingresso TV su cui viene commutato e chiama setMain in quella sessione.
  7. La sessione TV Input Manager trasmette queste informazioni all'ingresso TV HDMI.
  8. L'ingresso TV HDMI richiede di impostare la superficie della banda laterale.
  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 TV

Trasmetti app

Poiché ogni paese ha requisiti specifici per la trasmissione (MHEG, Teletext, HbbTV e altri), i produttori dovrebbero fornire le proprie soluzioni per l'app di trasmissione, ad esempio:

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

Nella versione Android L, Android TV prevede che i produttori di dispositivi utilizzino integratori di sistemi o soluzioni Android per stack TV regionali, passino la superficie a stack software TV o passino il codice chiave necessario per interagire con stack legacy.

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

  1. L'app TV è a fuoco, ricevendo tutte le chiavi.
  2. L'app TV trasmette le chiavi (ad es. pulsante rosso) al dispositivo di ingresso TV.
  3. Il dispositivo TV Input si integra internamente con lo stack TV legacy.
  4. Alla ricezione di un codice chiave di attivazione (es. pulsante rosso), il dispositivo TV Input attiva le app di trasmissione.
  5. Un'app di trasmissione si concentra nell'app TV e gestisce le azioni dell'utente.

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