Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

Quadro di input TV

Icona di Android TV HAL

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

Il framework non cerca di implementare standard televisivi o requisiti regionali, ma rende più facile per i produttori di dispositivi soddisfare gli standard di trasmissione televisiva digitale regionale 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. 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 di sintonizzazione IP e integrati. L'app TV comunica con i moduli di ingresso TV forniti dal produttore del dispositivo o da altre parti tramite TV Input Manager.

Il TV Input Framework è 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 quando 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'ingresso TV con sintonizzatore integrato
  • MediaCas: un framework per l'accesso condizionato
  • Tuner Resource Manager: un servizio per gestire la risorsa hardware per ingresso TV, MediaCas e ingresso sintonizzatore integrato

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 TIF (Android TV Input Framework)

Flusso

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ò parlare direttamente con gli ingressi TV. TV Input Manager identifica lo stato degli ingressi TV per l'app TV. Vedere TV Input Manager di seguito per maggiori dettagli su queste limitazioni.

Autorizzazioni

  • Solo gli ingressi TV signatureOrSystem e l'app TV hanno pieno accesso 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. È possibile accedere agli ingressi TV uno a uno tramite le sessioni di TV Input Manager.
  • Gli ingressi TV di terze parti hanno accesso bloccato al pacchetto al database del provider TV e possono LEGGERE / SCRIVERE solo per le righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono visualizzare il proprio contenuto o il contenuto 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.
  • Autorizzazione TV_INPUT_HARDWARE per un'app di ingresso TV hardware, segnala al servizio TV Input Manager di notificare all'avvio il servizio TV Input per chiamare il servizio TV Input Manager e aggiungere i suoi ingressi TV. Questa autorizzazione consente a un'app di ingresso TV hardware di supportare più ingressi TV per servizio di ingresso TV, oltre a essere in grado di aggiungere e rimuovere dinamicamente i suoi ingressi TV supportati.

Provider TV

Il database del provider TV memorizza i canali ei programmi dagli 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 e i 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 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 il programma con genere 0x25 (che significa "Sport"), l'ingresso TV popolerà il "genere di trasmissione" con la stringa "Sport" e il provider TV popolerà il campo "genere canonico" con il valore mappato android.provider.TvContract.Genres.SPORTS .

Vedere lo schema seguente per una visualizzazione dettagliata del provider TV.

Fornitore di Android TV
Figura 2. Provider di 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. Questi dati BLOB possono includere informazioni personalizzate, come la frequenza del sintonizzatore associato, e possono essere forniti in un buffer di protocollo o in un'altra forma. È disponibile un campo ricercabile per rendere alcuni 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 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: ci sono 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 servizio ( COLUMN_SERVICE_ID ).
  • Dati interni : campi per l'utilizzo personalizzato degli ingressi TV.
    Alcuni campi, come COLUMN_INTERNAL_PROVIDER_DATA , sono campi BLOB personalizzabili in cui un 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. Può essere impostato solo a livello di canale. Tutti i programmi rimandano all'impostazione sul canale.
    • COLUMN_SEARCHABLE : la limitazione della ricerca da alcuni canali potrebbe essere un requisito in alcune regioni. COLUMN_SEARCHABLE = 0 significa che il canale non deve essere 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 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 la superficie dell'app TV, delle app di sistema o degli ingressi TV.

  • Ogni riga ha PACKAGE_NAME , il pacchetto (app) che possiede quella riga, controllato su Query, Insert, Update 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 ACCESS_ALL_EPG_DATA autorizzazione ACCESS_ALL_EPG_DATA per accedere all'intero database.

TV Input Manager

TV Input Manager fornisce un'API di sistema centrale all'intero Android TV Input Framework. Arbitra l'interazione tra app e ingressi TV e fornisce funzionalità di controllo genitori. Le sessioni TV Input Manager devono essere create una a una 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 che ha aggiunto 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 provider TV. Questo accesso può essere utilizzato per creare app per navigare e cercare in tutti i canali e programmi TV disponibili.

TvInputCallback 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 alla 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.

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 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 vengono installati (tramite Play, preinstallati o sideloaded). 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 passthrough

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 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 di utilità android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . L'app TV comunica con TV Input Manager per raggiungere l'ingresso HDMI TV.

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 è considerato attendibile 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 per Android TV

In questo esempio, l'ingresso TV STB esterno è fornito da una terza parte. Poiché quell'ingresso TV non può accedere direttamente al feed video HDMI in arrivo, deve passare attraverso TV Input Manager 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 di immagine nell'immagine (PIP)

KeyEvents per Android TV
Figura 6. Android TV KeyEvents

Il diagramma sopra mostra come i pulsanti di un telecomando vengono passati a un ingresso TV specifico per la visualizzazione Picture in Picture (PIP). Quelle pressioni dei pulsanti vengono interpretate dal driver hardware fornito dal produttore del dispositivo, convertendo i codici di InputReader hardware in codici chiave Android e trasmettendoli alla pipeline di input Android standard InputReader e InputDispatcher 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 ha bisogno di consumare.

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

Esempio di input MHEG-5

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

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

Raffigura il flusso di un'app pulsante rosso, comune in Europa per consentire agli utenti di accedere ad app interattive sui loro televisori. È possibile inviare un'app 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.

Vedere 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 InputEvents. 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 di attivazione (es. Pulsante rosso), l'ingresso TV attiva l'app di trasmissione.
  5. L'ingresso TV consuma KeyEvents come InputEvents e l'app di trasmissione è il focus e gestisce InputEvents fino a quando non viene InputEvents .

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, l'HAL ingresso TV ( tv_input ) è disponibile nell'albero dei sorgenti AOSP e il fornitore sviluppa la sua implementazione.

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

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

Visualizzazione

  • Accedi e naviga in tutti i canali TV
  • Accesso alla barra delle informazioni sui programmi TV
  • Visualizza i dati della Guida elettronica alla programmazione (EPG)
  • Supporta più tracce audio e sottotitoli
  • Fornire la verifica del PIN del controllo parentale
  • Consenti overlay dell'interfaccia utente di 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 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 sono 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à per quanto riguarda la visualizzazione di ingressi e canali TV di terze parti all'utente. L'app Live TV di riferimento fornisce un'implementazione compatibile; se si sostituisce l'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 far emergere gli ingressi 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 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 canali al database TvProvider. Tuttavia, la maggior parte fornirà un'attività di configurazione per consentire all'utente di configurare i propri canali, fornire i dettagli di accesso e altre azioni. L'app TV di sistema deve garantire che l'utente possa attivare questa attività di configurazione, motivo per cui il CDD richiede che gli input di terze parti siano azioni di navigazione minime lontano dall'app TV principale.

L'app Live TV di riferimento fornisce il menu Channel Sources per accedere 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, una scheda di notifica viene visualizzata nella parte superiore del menu dell'app TV dopo l'installazione di un nuovo ingresso TV, per portare l'utente direttamente alla configurazione:

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

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

Vedere Definire il servizio di ingresso 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 funzione.

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 l'elenco dei tuoi canali.

EPG

Gli sviluppatori di input di terze parti devono avere la certezza che gli utenti possano facilmente navigare ai loro 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'esperienza TV live standard EPG del dispositivo. È possibile utilizzare la separazione visiva o le categorie separate per i canali di terze parti (vedere la sezione App TV del CDD Android). La chiave è che gli utenti sono 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. La TV in diretta fornisce un'implementazione (vedere com.android.tv.search.TvProviderSearch ) che fornisce risultati da input di terze parti (richiesti per la compatibilità della piattaforma) e input incorporati.

Tempo di spostamento

Per i dispositivi su Android 6.0 e versioni successive, l'app TV deve supportare le API di time shifting 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 far 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 su 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 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 live, l'app TV gestisce anche i conflitti di risorse. Ad esempio, se il dispositivo ha due sintonizzatori, può registrare due programmi contemporaneamente. Se l'utente chiede di registrarne tre, l'app TV deve gestire il conflitto e dovrebbe mostrare una notifica o richiedere che l'utente pianifichi 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 visualizzazione di una possibile implementazione del DVR in Android TV.

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

  1. Il servizio di ingresso 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 la programmazione della registrazione nel proprio database interno.
  4. Quando è il momento di registrare, l'app TV invia una richiesta per sintonizzarsi sul canale associato alla registrazione.
  5. Il TV Input Service riceve questa richiesta, risponde indicando se ci sono risorse appropriate e si sintonizza sul canale.
  6. Quindi l'app TV passa 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 è il momento di terminare la registrazione, l'app TV passa la richiesta di interruzione della registrazione a TV Input Manager.
  10. Una volta che il TV Input Service 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 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à. 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 di input di terze parti.
  • Vedere Definire il servizio di ingresso TV per le aspettative degli sviluppatori in quest'area.

Controllo dei genitori

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

La responsabilità per la funzionalità di controllo genitori è 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.

Un certo numero di paesi ha definito sistemi di classificazione che gli ingressi TV possono utilizzare tramite TVContentRating API . Inoltre, gli ingressi TV possono registrare i propri sistemi di classificazione personalizzati, come dimostrato dal test CTS Verifier, che introduce una valutazione "falsa". Per i paesi in cui esiste un sistema di classificazione standard, i produttori di dispositivi sono incoraggiati a combinare il controllo genitori di TV Input Framework con qualsiasi altro meccanismo che potrebbero includere.

Provider TV

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 genitori.

TV Input Manager

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

Ingresso TV

L'ingresso TV controlla se il contenuto corrente deve essere bloccato chiamando isRatingBlocked() su TV Input Manager 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, TV Input abilita audio e video e notifica notifyContentAllowed() TV che il contenuto corrente è consentito chiamando notifyContentAllowed() .

App TV

Per onorare le API di controllo genitori e quindi creare una piattaforma compatibile, l'app TV di sistema deve fornire agli utenti un modo per gestire il controllo genitori, anche per eventuali valutazioni 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 genitori. Quando l'utente modifica le impostazioni del controllo parentale, ogni TvContentRating bloccato viene memorizzato da TV Input Manager ei canali bloccati vengono memorizzati 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:

  • Esegui il test del controllo genitori di CTS Verifier sull'applicazione TV in diretta di riferimento per una dimostrazione dei requisiti di compatibilità.
  • Usa l'app Live TV come riferimento per la propria app TV: in particolare vedi 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 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 ingressi, accendere o spegnere dispositivi e altro ancora.

Il TIF Android 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 la logica di business più complessa. Fornendo un'implementazione standard, Android cerca di mitigare i problemi di compatibilità riducendo le implementazioni frammentate e il supporto selettivo delle funzionalità. Il servizio di controllo HDMI utilizza i servizi Android esistenti, inclusi input e alimentazione.

Ciò significa che le implementazioni HDMI-CEC esistenti dovranno essere riprogettate per 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 a HDMI-CEC HAL.
  3. L'HAL notifica a tutti gli ActiveSourceChangeListeners .
  4. Il servizio di controllo HDMI viene informato della modifica della sorgente tramite ActiveSourceChangeListener .
  5. Il servizio TV Input Manager genera l'intento per l'app TV di cambiare la sorgente.
  6. L'app TV crea quindi una sessione TV Input Manager per l'ingresso TV a 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 HDMI TV 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 della TV

App di trasmissione

Poiché ogni paese ha requisiti specifici per la trasmissione (MHEG, Televideo, HbbTV e altro), 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 sistema o soluzioni Android per stack TV regionali, passino la superficie agli 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 e riceve tutte le chiavi.
  2. L'app TV passa 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 legacy.
  4. Alla ricezione di un codice chiave di attivazione (ad es. 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 / raccomandazione vocale, l'app di trasmissione potrebbe supportare la ricerca in-app per la ricerca vocale.