Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Quadro di ingresso TV

Icona HAL di Android TV

Android TV Input Framework (TIF) semplifica la consegna 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 framework non cerca di implementare gli standard TV o i requisiti regionali, ma rende più facile per i produttori di dispositivi soddisfare gli standard regionali di trasmissione TV digitale senza reimplementazione. La documentazione in questa sezione potrebbe anche essere utile 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. 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 altri soggetti tramite Gestione ingressi TV.

Il framework di input TV è composto 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
  • TV Input HAL (modulo tv_input ): una definizione hardware che consente agli ingressi TV di 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

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

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

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

permessi

  • Solo gli ingressi TV e l'App TV di signatureOrSystem hanno pieno accesso al database del provider TV e sono in grado di ricevere KeyEvents.
  • Solo gli ingressi TV di sistema possono accedere all'HAL dell'ingresso TV tramite il servizio Gestione ingressi TV. Gli ingressi TV sono accessibili uno a uno tramite sessioni TV Input Manager.
  • Gli ingressi TV di terze parti hanno accesso al pacchetto bloccato al database del provider TV e possono LEGGERE / SCRIVERE solo alle righe del pacchetto corrispondenti.
  • Gli ingressi TV di terze parti possono visualizzare i propri contenuti o contenuti dagli ingressi TV passthrough del produttore di un dispositivo, come HDMI1. Non possono visualizzare contenuti da ingressi TV non passthrough, come un sintonizzatore IPTV o incorporato.
  • Autorizzazione TV_INPUT_HARDWARE per un'app TV Input hardware, segnala al servizio TV Input Manager di avvisare il servizio TV Input all'avvio 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 poter aggiungere e rimuovere dinamicamente gli ingressi TV supportati.

Provider TV

Il database del fornitore TV memorizza i canali e i programmi dagli ingressi TV. Il fornitore TV pubblica e gestisce anche le autorizzazioni associate in modo che gli ingressi TV possano vedere solo i propri record. Ad esempio, uno specifico Ingresso TV può vedere solo i canali e i programmi che ha fornito ed è vietato l'accesso ai canali e ai programmi di altri ingressi TV.

Il fornitore 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 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 .

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

Provider TV Android
Figura 2. Provider 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 gli ingressi TV possono utilizzare per memorizzare dati arbitrari. I dati BLOB possono includere informazioni personalizzate, come la frequenza del sintonizzatore associato, e possono essere forniti in un buffer di protocollo o in un altro modulo. Un campo disponibile per la ricerca è disponibile 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 channel ( android.provider.TvContract.Channels ) e program ( android.provider.TvContract.Programs ). Queste tabelle sono popolate e accessibili dagli ingressi TV e dalle app di sistema come l'app TV. Queste tabelle hanno quattro tipi di campi:

  • Display: 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, secondo gli standard pertinenti, come l'ID del flusso di trasporto di un canale ( COLUMN_TRANSPORT_STREAM_ID ), l'ID della 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, ricerca o visualizzazione. Questo 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 può 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. Impedire che il canale venga sfogliato dalle 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 immettere il codice PIN. COLUMN_LOCKED = 1 significa che il canale deve essere protetto dal controllo genitori.

Per un elenco più completo dei campi, consultare 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 l'app TV, le app di sistema o gli ingressi TV emergono.

  • Ogni riga ha PACKAGE_NAME , il pacchetto (app) che possiede quella riga, controllato su Query, Insert, Update via TvProvider.java. Un ingresso TV può accedere solo alle informazioni che ha scritto ed è isolato dalle informazioni fornite da altri ingressi TV.
  • Autorizzazioni LEGGI, SCRIVI 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 al Framework di input TV Android complessivo. Arbitrano l'interazione tra app e ingressi TV e fornisce funzionalità di controllo parentale. Le sessioni di 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:

  • Elencare gli ingressi TV e verificarne lo stato
  • Crea sessioni e gestisci ascoltatori

Per le sessioni, un ingresso TV può essere sintonizzato dall'app TV solo sugli URI che è stato aggiunto al database del fornitore 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 costruire 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 su una modifica dello stato di un ingresso TV o TvInputCallback 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.

TV Input Manager interrompe 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, preinstallato 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 sintonizzatore integrato, possono essere forniti solo dal produttore in quanto parlano direttamente con l'hardware sottostante. Altri, come IPTV, spostamento di luogo e STB esterno, possono essere forniti da terze parti come APK su Google Play Store. Una volta scaricato e installato, il nuovo input può essere selezionato all'interno dell'app TV.

Esempio di input passthrough

Ingresso sistema Android TV
Figura 3. Ingresso 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 Gestione ingressi TV per raggiungere l'ingresso TV HDMI.

Esempio di sintonizzatore incorporato

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

In questo esempio, l'ingresso TV del sintonizzatore integrato fornito dal produttore del dispositivo è 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 Android TV

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

Tramite 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 di Android TV
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 di immagini nell'immagine (PIP). Tali pressioni dei pulsanti vengono interpretate dal driver hardware fornito dal produttore del dispositivo, convertendo gli scancodes hardware in codici chiave Android e passandoli alle funzioni standard InputReader e InputDispatcher pipeline di input Android 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 InputEvent consumare e dovrebbe consentire all'app TV di gestire i tasti che non è necessario consumare.

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

Esempio di input MHEG-5

Il diagramma seguente mostra una vista più dettagliata di come i KeyEvents vengono instradati attraverso il TIF Android.

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

Descrive il flusso di un'app 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, è possibile utilizzare queste app di trasmissione per accedere a pagine Web o punteggi 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 tutti i tasti.
  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 chiave di attivazione (ad 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 i tasti.

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 di ingresso TV ( 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. Un'app TV di riferimento (Live TV) viene fornita insieme alla piattaforma Android, che può essere utilizzata così com'è, personalizzata, estesa o sostituita dai produttori di dispositivi. Il codice sorgente è disponibile nel progetto Open Source Android e puoi iniziare con questo nell'articolo dell'app TV di riferimento .

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

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

Installazione e configurazione

  • Rilevamento automatico degli ingressi TV
  • Consenti agli ingressi TV di avviare la configurazione del canale
  • Controlla le impostazioni dei genitori
  • Modifica canali

Sta guardando

  • Accedi e naviga su tutti i canali TV
  • Accedi alla barra delle informazioni sui programmi TV
  • Visualizza i dati della Guida di programmazione elettronica (EPG)
  • Supporta più tracce audio e sottotitoli
  • Fornire la sfida PIN controllo genitori
  • Consenti sovrapposizione interfaccia utente ingresso TV per standard TV (HbbTV, ecc.)
  • Popolare i risultati della ricerca per canali e programmi TV
  • Visualizza le schede di collegamento delle app
  • Supporta le API di 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 compatibile del dispositivo Android, l'app TV di sistema ha alcune responsabilità per quanto riguarda la visualizzazione degli ingressi e dei canali TV di terze parti all'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 del sistema deve presentare input di terze parti insieme al servizio TV live 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 seguenti sezioni mostrano come l'applicazione Live TV soddisfa i requisiti CDD.

Nuova impostazione del canale

L'aggiunta di nuovi ingressi / canali di terze parti inizia con la ricerca e l'installazione 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 installazione 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 installazione, motivo per cui il CDD richiede che input di terze parti siano azioni di navigazione minime lontano dall'app TV principale.

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

Vai alle impostazioni
Figura 8. Vai a Impostazioni .

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

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

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

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

Sono disponibili notifiche che mostrano le nuove fonti del canale.
Figura 12. Sono disponibili notifiche che mostrano le nuove fonti del canale.

Se l'utente interviene attraverso la notifica, può scegliere di impostare le proprie fonti come mostrato nella Figura 10.

Vedere Definire il servizio di input TV per le aspettative degli sviluppatori in questo settore.

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

EPG

Gli sviluppatori di input di terze parti devono avere la certezza che gli utenti possono facilmente navigare verso i 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'EPG dell'esperienza TV live standard 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 installati.

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. Live TV fornisce un'implementazione (vedi com.android.tv.search.TvProviderSearch ) che fornisce risultati da input di terze parti (richiesti per la compatibilità della piattaforma) e input integrati.

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 shifting, 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 Android Framework, per supportare, elencare e riprodurre programmi registrati.

Ciò consente ai produttori di dispositivi di collegare i loro sottosistemi DVR al 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 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 deve presentare 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 vorrebbero registrare tutti gli episodi futuri di una serie quando richiedono di registrare un episodio.

Vedere il diagramma seguente per una vista su una possibile implementazione del DVR in Android TV.

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

  1. Il servizio di input TV 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 suo 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 se ci sono risorse appropriate e si sintonizza sul canale.
  6. Quindi l'app TV trasmette una richiesta per avviare la registrazione su 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 servizio di input TV riceve la richiesta, interrompe la registrazione e aggiunge i relativi metadati 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, consultare questo articolo sulla registrazione TV .

Risorse utili

  • Il CDD Android e le API sviluppate documentate sono i riferimenti definitivi.
  • CTS Verifier esercita le API nell'ambito del programma di test di compatibilità. Eseguirlo su Live TV 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 input TV per le aspettative degli sviluppatori in questo settore.

Controllo dei genitori

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

La responsabilità della funzionalità di controllo parentale è condivisa tra l'app TV, il servizio Gestione ingressi TV, il fornitore 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 valutazione "falsa". Per i paesi in cui esiste un sistema di classificazione standard, i produttori di dispositivi sono incoraggiati a combinare il Controllo genitori della TV Input Framework con qualsiasi altro meccanismo che possano includere.

Provider TV

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

TV Input Manager

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

Ingresso TV

L'ingresso TV verifica 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 se le impostazioni del controllo genitori sono state modificate (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 viene bloccato chiamando notifyContentBlocked(TvContentRating) . Se il contenuto non deve essere bloccato, l'ingresso TV abilita l'audio e il video e notifica notifyContentAllowed() TV che il contenuto corrente è consentito chiamando notifyContentAllowed() .

App TV

Per onorare le API di controllo parentale e quindi creare una piattaforma compatibile, l'app TV del sistema deve fornire un modo per gli utenti di 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 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 genitori, ogni TvContentRating bloccato viene memorizzato da Gestione input TV e i 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 CTS Verifier sull'applicazione Live TV 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 quindi a un singolo telecomando di controllare più apparecchi in un sistema home theater. Viene utilizzato da Android TV per velocizzare la configurazione e consentire il controllo distante su vari ingressi TV tramite l'app TV centrale. Ad esempio, può cambiare input, accendere o spegnere i dispositivi e altro ancora.

Android TIF implementa HDMI-CEC come HDMI Control Service, quindi i produttori di dispositivi devono semplicemente sviluppare driver di basso livello che interagiscono con l'HAL Android TV leggero, saltando logiche aziendali 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. Raccomandiamo 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 fonte attualmente attiva per passare a una fonte diversa.
  2. Il driver passa il comando a HDMI-CEC HAL.
  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 intento affinché l'app TV cambi la sorgente.
  6. L'app TV crea quindi una sessione di Gestione ingressi TV per l'ingresso TV su cui si passa e chiama setMain in quella sessione.
  7. La sessione Gestione ingressi TV passa queste informazioni sull'ingresso TV HDMI.
  8. L'ingresso HDMI TV richiede di impostare la superficie della banda laterale.
  9. Il servizio Gestione ingressi TV genera un comando di controllo del routing corrispondente su Servizio controllo HDMI quando la superficie è impostata.

Linee guida per l'integrazione TV

App di trasmissione

Poiché ogni paese ha requisiti specifici per la trasmissione (MHEG, Televideo, HbbTV e altro), i produttori sono tenuti a 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 e riceve tutti i tasti.
  2. L'app TV passa i tasti (es. 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 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.