Quadro di ingresso TV

Icona HAL di Android TV

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

Il quadro non mira a implementare gli standard televisivi o i requisiti regionali, ma rende più semplice per i produttori di dispositivi soddisfare gli standard regionali di trasmissione della TV digitale senza reimplementazione. La documentazione in questa sezione potrebbe essere utile anche agli 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. 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 TV Input forniti dal produttore del dispositivo o da altre parti tramite TV Input Manager.

Il TV Input Framework è costituito da:

  • Fornitore 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
  • TV Input HAL (modulo tv_input ): una definizione hardware che consente agli ingressi TV del sistema di accedere all'hardware specifico della TV quando implementato
  • Parental Control: la tecnologia che consente 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'ingresso TV del sintonizzatore integrato
  • MediaCas: un framework per l'accesso condizionato
  • Tuner Resource Manager: un servizio per gestire le risorse hardware per l'ingresso TV, MediaCas e ingresso sintonizzatore integrato

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

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

Fluire

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 visualizza il contenuto AV dall'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, vedere Gestione ingresso TV di seguito.

Autorizzazioni

  • 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'HAL ingresso TV tramite il servizio TV Input Manager. È possibile accedere agli ingressi TV uno a uno tramite le sessioni TV Input Manager.
  • Gli ingressi TV di terze parti hanno accesso bloccato al pacchetto al database del fornitore TV e possono LEGGERE/SCRIVERE solo sulle righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono visualizzare i propri contenuti o i contenuti provenienti dagli ingressi TV passthrough del produttore del dispositivo, come HDMI1. Non possono visualizzare contenuti da ingressi TV non passthrough, come un sintonizzatore IPTV o integrato.
  • L'autorizzazione TV_INPUT_HARDWARE per un'app TV Input hardware segnala al servizio TV Input Manager di notificare al servizio TV Input all'avvio di chiamare il servizio TV Input Manager e aggiungere i relativi ingressi TV. Questa autorizzazione consente a un'app TV Input hardware di supportare più ingressi TV per servizio di ingresso TV, oltre a poter aggiungere e rimuovere dinamicamente gli ingressi TV supportati.

Fornitore televisivo

Il database del fornitore TV memorizza i canali e i programmi dagli ingressi TV. Il provider TV pubblica e gestisce inoltre 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 e i programmi che ha fornito e non può accedere ai canali e ai programmi di altri ingressi TV.

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

Vedi il diagramma qui sotto per una visione dettagliata del provider TV.

Fornitore TV Android
Figura 2. Fornitore TV Android

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 fornitore TV offre anche un campo di tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA , in ogni tabella che TV Inputs può 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'altra forma. È disponibile un campo Ricercabile per rendere determinati canali non disponibili nella ricerca (ad esempio per soddisfare i requisiti specifici del paese per la protezione dei contenuti).

Esempi di campi del database

Il provider TV supporta dati strutturati nelle tabelle dei canali ( android.provider.TvContract.Channels ) e dei programmi ( android.provider.TvContract.Programs ). Queste tabelle sono popolate e accessibili tramite 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: sono presenti tre campi per identificare il contenuto, in base agli standard pertinenti, come l'ID del flusso di trasporto di un canale ( COLUMN_TRANSPORT_STREAM_ID ), l'ID di rete originale ( COLUMN_ORIGINAL_NETWORK_ID ) e l'ID del servizio ( COLUMN_SERVICE_ID ).
  • Dati interni : campi destinati all'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.
  • Flag: i campi flag indicano se un canale deve essere limitato dalla ricerca, dalla navigazione o dalla visualizzazione. Questo può essere impostato solo a livello di canale. Tutti i programmi si riferiscono 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. Limitare la 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, vedere android/frameworks/base/media/java/android/media/tv/TvContract.java

Autorizzazioni e controllo degli accessi

Tutti i campi sono visibili a chiunque abbia accesso alla riga corrispondente. Nessun campo è direttamente accessibile agli utenti; vedono solo ciò che viene visualizzato 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 ingressi TV

TV Input Manager fornisce un'API di sistema centrale per l'intero Android TV Input Framework. Regola 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 in modo che le app possano:

  • 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() . Anche un ingresso TV può 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 fornitore TV. Questo accesso può essere utilizzato per creare app per sfogliare ed effettuare ricerche in tutti i canali e 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 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, aiutando al contempo 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 installate (tramite Play, preinstallate o trasferite localmente). 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é comunicano 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 passthrough

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

In questo esempio, l'ingresso TV fornito dal produttore del dispositivo è attendibile e ha pieno accesso al provider TV. Come ingresso TV passthrough, non registra alcun canale o programma con il provider TV. Per ottenere l'URI utilizzato per fare riferimento all'input passthrough, utilizzare il metodo dell'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 di Android TV

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

Esempio di input di terze parti

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

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

Attraverso TV Input Manager, l'ingresso TV STB esterno può parlare con l'ingresso 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 esegue il rendering del video.

Esempio di immagine nell'immagine (PIP).

Eventi chiave di Android TV
Figura 6. Eventi chiave di Android TV

Il diagramma sopra mostra come i pulsanti di un telecomando vengono passati a uno specifico ingresso TV per la visualizzazione PIP (immagine nell'immagine). Queste pressioni dei pulsanti vengono interpretate dal driver hardware fornito dal produttore del dispositivo, convertendo i codici di scansione hardware in codici chiave Android e passandoli alle funzioni InputReader e InputDispatcher della pipeline di input Android standard 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'ingresso TV è responsabile di determinare quali InputEvents consumare e dovrebbe consentire all'app TV di gestire le chiavi che non è necessario consumare.

L'App TV è responsabile di sapere quale sistema TV Input è attivo, ovvero selezionato dall'utente, e di disambiguare KeyEvents in arrivo e instradarli alla sessione TV Input Manager corretta, chiamando dispatchInputEvent() per trasmettere l'evento al TV Input associato .

Esempio di ingresso MHEG-5

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

Esempio del pulsante rosso di Android TV
Figura 7. Esempio del pulsante rosso di 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 tramite 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 correlate o risultati sportivi.

Consulta la sezione dell'app 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 esempio il pulsante Rosso) vengono passati all'ingresso TV attivo come InputEvents.
  3. L'ingresso TV del sistema si integra con lo stack MHEG-5 e dispone dell'autorizzazione di sistema RECEIVE_INPUT_EVENT .
  4. Dopo aver ricevuto il codice di attivazione (ad esempio il 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 alla chiusura.

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

Ingresso TV HAL

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

Nota : a partire da Android 14, l'interfaccia HAL dell'ingresso TV viene definita utilizzando AIDL .

Applicazione televisiva

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 Android Open Source e puoi iniziare a utilizzarlo nell'articolo sull'app Reference TV .

I produttori di dispositivi possono estendere le proprie 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
  • Lascia che gli ingressi TV avviino la configurazione dei canali
  • Controlla le impostazioni dei genitori
  • Modifica canali

Visualizzazione

  • Accedi e naviga in tutti i canali TV
  • Accedere alla barra delle informazioni sui programmi TV
  • Visualizza i dati della Guida elettronica alla programmazione (EPG).
  • Supporta più tracce audio e sottotitoli
  • Fornire la sfida del PIN del controllo parentale
  • Consenti la sovrapposizione dell'interfaccia utente di ingresso TV per lo standard TV (HbbTV e così via)
  • Compila 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 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à relative alla presentazione all'utente di ingressi e canali TV di terze parti. 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 input di terze parti insieme al servizio TV in diretta predefinito del dispositivo. La promessa delle API per 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 di 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 la ricerca e l'installazione da parte dell'utente di un ingresso TV da un negozio di applicazioni, come Google Play.

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

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

Vai alle impostazioni
Figura 8. Vai su 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, nella parte superiore del menu dell'app TV viene visualizzata una scheda di notifica per portare l'utente direttamente alla configurazione:

Notifica che mostra la disponibilità di nuove fonti di canali.
Figura 12. Notifica che mostra la disponibilità di nuove sorgenti di canali.

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

Vedi 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 funzionalità.

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

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

EPG

Gli sviluppatori di input di terze parti devono avere la certezza che gli utenti possano accedere facilmente ai 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 dell'esperienza TV in diretta standard del dispositivo. È possibile utilizzare la separazione visiva o categorie separate per i canali di terze parti (vedere la sezione App TV del CDD di Android): la chiave è che gli utenti siano in grado di trovare i canali che hanno installato.

I produttori devono implementare l'app TV per includere risultati di ricerca per richieste di ricerca globali al fine di garantire la migliore esperienza utente. La TV in diretta fornisce un'implementazione (vedi che fornisce risultati da input di terze parti (richiesti 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 Time Shifting del framework Android. Inoltre, i produttori devono implementare controlli di riproduzione nell'app TV, che consentano agli utenti di mettere in pausa, riprendere, riavvolgere e avanzare rapidamente la riproduzione.

Per gli ingressi TV che supportano il timeshift, 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 propri 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 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 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 deve mostrare una notifica o richiedere all'utente di pianificare una priorità per queste richieste.

Le app TV possono anche implementare una logica più sofisticata 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 del DVR in Android TV.

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

  1. Il servizio TV Input comunica 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 suo database interno.
  4. Quando è il momento di registrare, l'App TV passa una richiesta di sintonizzarsi sul canale associato alla registrazione.
  5. Il servizio TV Input riceve questa richiesta, risponde indicando se sono presenti o meno risorse adeguate e si sintonizza sul canale.
  6. Quindi l'app TV trasmette una richiesta per avviare la registrazione a TV Input Manager.
  7. Il servizio TV Input riceve questa richiesta e avvia la registrazione.
  8. Il servizio TV Input memorizza i dati video effettivi nella propria memoria, che può essere una memoria esterna o una memoria 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 che il servizio TV Input riceve la richiesta, 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 funzionalità di registrazione nel servizio TV Input, consulta 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à. Eseguire questa operazione con la TV in diretta può essere un modo utile per visualizzare l'EPG, la ricerca, il controllo genitori e altri requisiti nel contesto degli input di terze parti.
  • Vedi Definire il servizio di input TV per le aspettative degli sviluppatori in quest'area.

Controllo dei genitori

Il controllo parentale consente all'utente di bloccare canali e programmi indesiderati, ma di aggirare il blocco inserendo un codice PIN.

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

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

Diversi 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 controllo parentale del TV Input Framework con qualsiasi altro meccanismo eventualmente incluso.

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 applicare il controllo parentale.

Gestore ingressi TV

Il TV Input Manager memorizza ogni TvContentRating bloccato e risponde a isRatingBlocked() per avvisare se il contenuto con la classificazione specificata deve essere bloccato.

Ingresso TV

L'ingresso TV controlla se il contenuto corrente deve essere bloccato chiamando isRatingBlocked() su TV Input Manager quando la valutazione del contenuto visualizzato è cambiata (al cambio di programma o canale) o le impostazioni del controllo parentale 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() .

Applicazione televisiva

Per rispettare le API del 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 classificazioni personalizzate registrate da app specifiche.

L'app TV mostra un'interfaccia utente con codice PIN quando viene notificato 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 parentale. 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:

  • Esercita il test del controllo genitori 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 classificazioni personalizzate.

HDMI-CEC

HDMI-CEC consente a un dispositivo di controllarne un altro, consentendo così a un singolo 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 input, accendere o spegnere 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 HAL di Android TV, saltando logiche aziendali più complesse. 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 interagire con Android TIF. 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 una sorgente diversa.
  2. Il driver passa il comando all'HAL HDMI-CEC.
  3. L'HAL invia una notifica a tutti ActiveSourceChangeListeners .
  4. Il servizio di controllo HDMI viene informato della modifica della sorgente tramite ActiveSourceChangeListener .
  5. Il servizio TV Input Manager genera un intento per l'app TV di cambiare la sorgente.
  6. L'app TV crea quindi una sessione di gestione dell'ingresso TV per l'ingresso TV a cui si passa e chiama setMain in quella sessione.
  7. La sessione di gestione dell'ingresso TV 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 di instradamento corrispondente al servizio di controllo HDMI quando la superficie è impostata.

Linee guida per l'integrazione televisiva

Applicazione di trasmissione

Poiché ogni Paese ha requisiti specifici per la trasmissione (MHEG, Televideo, HbbTV e altro), ci si aspetta che i produttori forniscano 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 agli stack software TV o trasmettano 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 tutte le chiavi.
  2. L'app TV trasmette i tasti (ad esempio il pulsante rosso) al dispositivo di ingresso TV.
  3. Il dispositivo di ingresso TV si integra internamente con lo stack TV precedente.
  4. Dopo aver ricevuto un codice di attivazione (ad esempio il pulsante rosso), il dispositivo di ingresso TV attiva le app di trasmissione.
  5. Un'app di trasmissione si concentra sull'app TV e gestisce le azioni dell'utente.

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