Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Marco de entrada de TV

Icono de Android TV HAL

El marco de entrada de Android TV (TIF) simplifica la entrega de contenido en vivo a Android TV. Android TIF proporciona una API estándar para que los fabricantes creen módulos de entrada para controlar Android TV, y permite la búsqueda de TV en vivo y recomendaciones a través de metadatos publicados por TV Input.

El marco no busca implementar estándares de TV o requisitos regionales, pero sí facilita que los fabricantes de dispositivos cumplan con los estándares regionales de transmisión de TV digital sin volver a implementarlos. La documentación en esta sección también puede ser útil para desarrolladores de aplicaciones de terceros que desean crear entradas de TV personalizadas.

Componentes

La implementación de Android TV Input Framework incluye un Administrador de entrada de TV. El TIF funciona con la aplicación de TV, una aplicación del sistema que no puede ser reemplazada por una aplicación de terceros, para acceder a los canales integrados y sintonizadores de IP. La aplicación de TV se comunica con los módulos de entrada de TV suministrados por el fabricante del dispositivo u otras partes a través del Administrador de entrada de TV.

El marco de entrada de TV consta de:

  • Proveedor de TV ( com.android.providers.tv.TvProvider ): una base de datos de canales, programas y permisos asociados
  • Aplicación de TV ( com.android.tv.TvActivity ): la aplicación que maneja la interacción del usuario
  • Administrador de entrada de TV ( android.media.tv.TvInputManager ): permite que las entradas de TV se comuniquen con la aplicación de TV
  • Entrada de TV: una aplicación que representa sintonizadores físicos o virtuales y puertos de entrada
  • TV Input HAL (módulo tv_input ): una definición de hardware que permite que las entradas de TV del sistema accedan a hardware específico de TV cuando se implementa
  • Control parental: la tecnología para permitir el bloqueo de canales y programas
  • HDMI-CEC: la tecnología para permitir el control remoto de varios dispositivos a través de HDMI

Estos componentes están cubiertos en detalle a continuación. Consulte el siguiente diagrama para obtener una vista detallada de la arquitectura del Marco de entrada de Android TV.

Descripción general de la arquitectura Android TIF
Figura 1. Arquitectura de Android TV Input Framework (TIF)

Fluir

Así es como se ejerce la arquitectura:

  1. El usuario ve e interactúa con la aplicación de TV, una aplicación del sistema que no puede ser reemplazada por una aplicación de terceros.
  2. La aplicación de TV muestra el contenido AV de la entrada de TV.
  3. La aplicación de TV no puede hablar directamente con las entradas de TV. El Administrador de entrada de TV identifica el estado de las entradas de TV para la aplicación de TV. Consulte el Administrador de entrada de TV a continuación para obtener más detalles sobre estas limitaciones.

Permisos

  • Sólo signatureOrSystem TV Entradas y Aplicación de TV tienen acceso completo a la base de datos de proveedores de televisión y son capaces de recibir KeyEvents.
  • Solo las entradas de TV del sistema pueden acceder a la entrada de TV HAL a través del servicio TV Input Manager. Las entradas de TV se acceden individualmente a través de sesiones de TV Input Manager.
  • Las entradas de TV de terceros tienen acceso bloqueado a la base de datos del proveedor de TV y solo pueden LEER / ESCRIBIR a las filas de paquetes coincidentes.
  • Las entradas de TV de terceros pueden mostrar su propio contenido o contenido de las entradas de TV pasadas del fabricante del dispositivo, como HDMI1. No pueden mostrar contenido de entradas de TV que no sean de paso, como un sintonizador de IPTV incorporado.
  • TV_INPUT_HARDWARE permiso TV_INPUT_HARDWARE para una aplicación de entrada de TV de hardware, le indica al Servicio de entrada de TV que notifique al servicio de entrada de TV en el arranque para llamar al servicio de entrada de TV y agregar sus entradas de TV. Este permiso permite que una aplicación de entrada de TV de hardware admita múltiples entradas de TV por servicio de entrada de TV, además de poder agregar y eliminar dinámicamente sus entradas de TV compatibles.

Proveedor de TV

La base de datos del proveedor de TV almacena los canales y programas de las entradas de TV. El proveedor de TV también publica y administra los permisos asociados para que las entradas de TV solo puedan ver sus propios registros. Por ejemplo, una entrada de TV específica solo puede ver los canales y programas que ha suministrado y tiene prohibido acceder a los canales y programas de otras entradas de TV.

El proveedor de TV asigna "género de transmisión" a "género canónico" internamente. Las entradas de TV son responsables de llenar el "género de transmisión" con el valor en el estándar de transmisión subyacente, y el campo "género canónico" se completará automáticamente con el género asociado correcto de android.provider.TvContract.Genres . Por ejemplo, con el estándar de transmisión ATSC A / 65 y el programa con el género 0x25 (que significa "Deportes"), la entrada de TV completará el "género de transmisión" con la cadena "Deportes" y el proveedor de TV completará el campo "género canónico" con El valor mapeado android.provider.TvContract.Genres.SPORTS .

Consulte el diagrama a continuación para obtener una vista detallada del proveedor de TV.

Proveedor de Android TV
Figura 2. Proveedor de Android TV

Solo las aplicaciones en la partición privilegiada del sistema pueden leer la base de datos completa de proveedores de TV.

Las entradas de TV de paso no almacenan canales y programas.

Además de los campos estándar para canales y programas, la base de datos del proveedor de TV también ofrece un campo de tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA , en cada tabla que las entradas de TV pueden usar para almacenar datos arbitrarios. Esos datos BLOB pueden incluir información personalizada, como la frecuencia del sintonizador asociado, y pueden proporcionarse en un búfer de protocolo u otra forma. Un campo de búsqueda está disponible para hacer que ciertos canales no estén disponibles en la búsqueda (como para cumplir con los requisitos específicos del país para la protección de contenido).

Ejemplos de campo de base de datos

El proveedor de TV admite datos estructurados en tablas de canales ( android.provider.TvContract.Channels ) y programas ( android.provider.TvContract.Programs ). Las entradas de TV y las aplicaciones del sistema completan estas tablas y acceden a ellas, como la aplicación de TV. Estas tablas tienen cuatro tipos de campos:

  • Visualización: los campos de visualización contienen información que las aplicaciones pueden querer que el usuario pueda ver, como el nombre de un canal ( COLUMN_DISPLAY_NAME ) o el número ( COLUMN_DISPLAY_NUMBER ), o el título del programa que se está viendo.
  • Metadatos: Hay tres campos para identificar contenido, de acuerdo con los estándares relevantes, como el ID de flujo de transporte de un canal ( COLUMN_TRANSPORT_STREAM_ID ), el ID de red original ( COLUMN_ORIGINAL_NETWORK_ID ) y el ID de servicio ( COLUMN_SERVICE_ID ).
  • Datos internos : campos que son para el uso personalizado de las entradas de TV.
    Algunos campos, como COLUMN_INTERNAL_PROVIDER_DATA , son campos BLOB personalizables donde una entrada de TV puede almacenar metadatos arbitrarios sobre su canal o programa.
  • Indicador: los campos de indicador representan si un canal debe estar restringido de búsqueda, exploración o visualización. Esto solo se puede configurar a nivel de canal. Todos los programas difieren de la configuración del canal.
    • COLUMN_SEARCHABLE : restringir la búsqueda de algunos canales puede ser un requisito en ciertas regiones. COLUMN_SEARCHABLE = 0 significa que el canal no debe exponerse en los resultados de búsqueda.
    • COLUMN_BROWSABLE : visible solo para aplicaciones del sistema. Restringir el canal de ser navegado por las aplicaciones. COLUMN_BROWSABLE = 0 significa que el canal no debe incluirse en la lista de canales.
    • COLUMN_LOCKED : visible solo para aplicaciones del sistema. Restringir el canal para ser visto por cuentas inválidas sin ingresar el código PIN. COLUMN_LOCKED = 1 significa que el canal debe estar protegido por control parental.

Para obtener una lista más exhaustiva de los campos, consulte android/frameworks/base/media/java/android/media/tv/TvContract.java

Permisos y control de acceso.

Todos los campos son visibles para cualquier persona con acceso a la fila correspondiente. Ningún campo es directamente accesible para los usuarios; solo ven lo que aparecen en la aplicación de TV, aplicaciones del sistema o entradas de TV.

  • Cada fila tiene PACKAGE_NAME , el paquete (aplicación) que posee esa fila, verificado en Consulta, Insertar, Actualizar a través de TvProvider.java. Una entrada de TV solo puede acceder a la información que escribió y está separada de la información proporcionada por otras entradas de TV.
  • LEA, ESCRIBA los permisos a través de AndroidManifest.xml (requiere el consentimiento del usuario) para determinar los canales disponibles.
  • Solo las aplicaciones signatureOrSystem pueden adquirir el permiso ACCESS_ALL_EPG_DATA para acceder a toda la base de datos.

Administrador de entrada de TV

TV Input Manager proporciona una API del sistema central para el marco general de entrada de Android TV. Arbitra la interacción entre aplicaciones y entradas de TV y proporciona funcionalidad de control parental. Las sesiones de TV Input Manager deben crearse una a una con las entradas de TV. El TV Input Manager permite el acceso a las entradas de TV instaladas para que las aplicaciones puedan:

  • Listar entradas de TV y verificar su estado
  • Crea sesiones y gestiona oyentes

Para las sesiones, la aplicación de TV puede sintonizar una entrada de TV solo a los URI que ha agregado a la base de datos del proveedor de TV, a excepción de las entradas de TV pasadas que se pueden sintonizar usando TvContract.buildChannelUriForPassthroughInput() . Una entrada de TV también puede tener su volumen configurado. Las entradas de TV proporcionadas y firmadas por el fabricante del dispositivo (aplicaciones de firma) u otras aplicaciones instaladas en la partición del sistema tendrán acceso a toda la base de datos de proveedores de TV. Este acceso se puede utilizar para construir aplicaciones para navegar y buscar en todos los canales y programas de TV disponibles.

Una aplicación puede crear y registrar un TvInputCallback con android.media.tv.TvInputManager para que se le vuelva a llamar en el cambio de estado de una entrada de TV o al agregar o quitar una entrada de TV. Por ejemplo, una aplicación de TV puede reaccionar cuando una entrada de TV se desconecta mostrándola como desconectada y evitando su selección.

El Administrador de entrada de TV abstrae la comunicación entre la aplicación de TV y las entradas de TV. La interfaz estándar de TV Input Manager y TV Input les permite a múltiples fabricantes de dispositivos crear sus propias aplicaciones de TV mientras ayudan a que todas las entradas de TV de terceros funcionen en todas las aplicaciones de TV.

Entradas de TV

Las entradas de TV son aplicaciones de Android en el sentido de que tienen un AndroidManifest.xml y están instaladas (a través de Play, preinstaladas o cargadas lateralmente). Android TV admite aplicaciones de sistema preinstaladas, aplicaciones firmadas por el fabricante del dispositivo y entradas de TV de terceros.

Algunas entradas, como la entrada HDMI o la entrada del sintonizador incorporado, solo pueden ser proporcionadas por el fabricante, ya que hablan directamente con el hardware subyacente. Otros, como IPTV, desplazamiento de lugares y STB externo, pueden ser suministrados por terceros como APK en Google Play Store. Una vez descargado e instalado, la nueva entrada se puede seleccionar dentro de la aplicación de TV.

Ejemplo de entrada de paso

Entrada del sistema de Android TV
Figura 3. Entrada del sistema Android TV

En este ejemplo, la entrada de TV proporcionada por el fabricante del dispositivo es confiable y tiene acceso completo al proveedor de TV. Como entrada de TV passthrough, no registra ningún canal o programa con el proveedor de TV. Para obtener el URI utilizado para hacer referencia a la entrada de paso a través, use el método de utilidad android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . La aplicación de TV se comunica con el Administrador de entrada de TV para llegar a la entrada de TV HDMI.

Ejemplo de sintonizador incorporado

Entrada de sintonizador incorporado de Android TV
Figura 4. Entrada del sintonizador incorporado de Android TV

En este ejemplo, la entrada de TV del sintonizador incorporado proporcionada por el fabricante del dispositivo es de confianza y tiene acceso completo al proveedor de TV.

Ejemplo de entrada de terceros

Entrada de terceros de Android TV
Figura 5. Entrada de terceros de Android TV

En este ejemplo, la entrada de TV STB externa es proporcionada por un tercero. Dado que esa entrada de TV no puede acceder directamente a la alimentación de video HDMI que ingresa, debe pasar por el Administrador de entrada de TV y usar la entrada de TV HDMI proporcionada por el fabricante del dispositivo.

A través del Administrador de entrada de TV, la entrada de TV STB externa puede hablar con la entrada de TV HDMI y pedirle que muestre el video en HDMI1. Por lo tanto, la entrada de TV STB puede controlar el televisor mientras que la entrada de TV HDMI proporcionada por el fabricante reproduce el video.

Ejemplo de imagen en imagen (PIP)

Android TV KeyEvents
Figura 6. Eventos clave de Android TV

El diagrama anterior muestra cómo los botones de un control remoto se pasan a una entrada de TV específica para la visualización de imagen en imagen (PIP). Esas pulsaciones de botones son interpretadas por el controlador de hardware suministrado por el fabricante del dispositivo, convirtiendo los códigos de escaneo de hardware a códigos de teclas de Android y pasándolos a las funciones estándar de entrada de Android InputReader y InputDispatcher como KeyEvents . Estos a su vez desencadenan eventos en la aplicación de TV si está enfocado.

Solo las entradas de TV del sistema son elegibles para recibir InputEvents , y solo si tienen el permiso del sistema RECEIVE_INPUT_EVENT . La entrada de TV es responsable de determinar qué eventos de entrada consumir y debe permitir que la aplicación de TV maneje las teclas que no necesita consumir.

La aplicación de TV es responsable de saber qué sistema de entrada de TV está activo, es decir, seleccionado por el usuario, y de desambiguar los KeyEvents entrantes y KeyEvents a la sesión correcta de TV Input Manager, llamando a dispatchInputEvent() para pasar el evento a la entrada de TV asociada .

Ejemplo de entrada MHEG-5

El siguiente diagrama muestra una vista más detallada de cómo se enrutan los KeyEvents a través de Android TIF.

Ejemplo de botón rojo de Android TV
Figura 7. Ejemplo del botón rojo de Android TV

Representa el flujo de una aplicación de botón rojo, común en Europa para permitir a los usuarios acceder a aplicaciones interactivas en sus televisores. Se puede entregar una aplicación a través de esta secuencia de transporte. Cuando se hace clic en el botón, permite a los usuarios interactuar con estas aplicaciones de transmisión. Por ejemplo, puede usar estas aplicaciones de transmisión para acceder a páginas web relacionadas o puntajes deportivos.

Vea la sección de aplicación de difusión para aprender difusión aplicaciones interactúan con la aplicación de televisión.

En este ejemplo:

  1. La aplicación de TV está enfocada y recibe todas las claves.
  2. KeyEvents (por ejemplo, el botón rojo) se pasa a la entrada de TV activa como InputEvents.
  3. La entrada de TV del sistema se integra con la pila MHEG-5 y tiene el permiso del sistema RECEIVE_INPUT_EVENT .
  4. Al recibir el código clave de activación (por ejemplo, el botón rojo), la entrada de TV activa la aplicación de transmisión.
  5. La entrada de TV consume KeyEvents como InputEvents y la aplicación de transmisión es el foco y maneja InputEvents hasta que se descarta.

Nota : Las entradas de TV de terceros nunca reciben claves.

Entrada de TV HAL

La entrada de TV HAL ayuda al desarrollo de entradas de TV para acceder a hardware específico de TV. Al igual que con otros HAL de Android, el HAL de entrada de TV ( tv_input ) está disponible en el árbol de origen de AOSP y el proveedor desarrolla su implementación.

Aplicación de TV

La aplicación de TV del sistema presenta contenido de TV en vivo al usuario. Se proporciona una aplicación de TV de referencia (TV en vivo) junto con la plataforma Android, que los fabricantes de dispositivos pueden usar tal cual, personalizar, ampliar o reemplazar. El código fuente está disponible en el proyecto de código abierto de Android, y puede comenzar a usarlo en el artículo de la aplicación Referencia TV .

Los fabricantes de dispositivos pueden extender sus aplicaciones de TV para implementar el fabricante del dispositivo o las características específicas del país, sin embargo, esto no está dentro del alcance de TIF o la aplicación de TV de referencia.

Como mínimo, la aplicación de TV del sistema debe manejar las siguientes tareas:

Instalación y configuración

  • Detección automática de entradas de TV
  • Deje que las entradas de TV inicien la configuración del canal
  • Controlar la configuración parental
  • Editar canales

Visita

  • Acceda y navegue por todos los canales de TV
  • Acceda a la barra de información del programa de TV
  • Mostrar datos de la Guía de programación electrónica (EPG)
  • Admite múltiples pistas de audio y subtítulos
  • Suministro de PIN de control parental desafío
  • Permitir superposición de IU de entrada de TV para TV estándar (HbbTV, etc.)
  • Rellenar resultados de búsqueda para canales y programas de TV
  • Mostrar tarjetas de enlace de aplicaciones
  • Admite API de cambio de hora
  • Maneja la funcionalidad DVR y admite API de grabación de TV

Este conjunto de características aumentará en línea con las nuevas versiones de Android donde se extienden las API TIF de la plataforma. CTS Verifier proporciona la cobertura de prueba de compatibilidad.

Soporte para entradas de TV de terceros

Android TV proporciona API de desarrollador para entradas de TV de terceros, lo que permite que las aplicaciones instaladas entreguen canales de software en la experiencia de TV en vivo. Para garantizar una implementación compatible del dispositivo Android, la aplicación de TV del sistema tiene algunas responsabilidades con respecto a las entradas y canales de TV de terceros para el usuario. La aplicación de TV en vivo de referencia proporciona una implementación compatible; Si reemplaza la aplicación de TV del sistema, los fabricantes de dispositivos deben asegurarse de que sus propias aplicaciones ofrezcan una compatibilidad similar, para cumplir con las expectativas de los desarrolladores en todos los dispositivos de TV Android.

La aplicación de TV del sistema debe mostrar entradas de terceros junto con el servicio de TV en vivo predeterminado del dispositivo. La promesa de las API de desarrollador es que los usuarios podrán encontrar canales (una vez instalados) dentro de su experiencia de TV estándar.

Se permite la diferenciación visual entre canales incorporados y canales de terceros, tal como se define en la sección de la aplicación de TV del CDD de Android.

Las siguientes secciones muestran cómo la aplicación Live TV cumple con los requisitos de CDD.

Nueva configuración de canal

La adición de nuevas entradas / canales de terceros comienza cuando el usuario encuentra e instala una entrada de TV desde una tienda de aplicaciones, como Google Play.

Algunas entradas de TV de terceros agregan canales automáticamente a la base de datos de TvProvider. Sin embargo, la mayoría proporcionará una actividad de Configuración para permitir al usuario configurar sus canales, proporcionar detalles de inicio de sesión y otras acciones. La aplicación de TV del sistema debe garantizar que el usuario pueda activar esta actividad de configuración, por lo que el CDD requiere que las entradas de terceros sean acciones de navegación mínimas lejos de la aplicación de TV principal.

La aplicación de TV en vivo de referencia proporciona el menú Fuentes del canal para acceder a las entradas.

Ir a la configuración
Figura 8. Vaya a Configuración .

Ir a la fuente del canal en Configuración
Figura 9. Vaya a Fuentes de canales en Configuración.

Seleccione su fuente de la lista.
Figura 10. Seleccione su fuente de la lista.

Agrega canales desde tu fuente
Figura 11. Agregue canales desde su fuente.

Además, se muestra una tarjeta de notificación en la parte superior del menú de la aplicación de TV después de instalar un nuevo TvInput, para llevar al usuario directamente a la Configuración:

Las notificaciones que muestran nuevas fuentes de canales están disponibles.
Figura 12. Notificación que muestra nuevas fuentes de canales disponibles.

Si el usuario toma medidas a través de la notificación, puede seleccionar configurar sus fuentes como se ve en la Figura 10.

Consulte Definir su servicio de entrada de TV para conocer las expectativas de los desarrolladores en esta área.

Personaliza la lista de canales

Los fabricantes de dispositivos pueden proporcionar una interfaz de usuario para ocultar ciertos canales y permitir a los usuarios administrar sus propias EPG. TV en vivo incluye esta instalación.

Abra la lista de canales en Configuración.
Figura 13. Abra la lista de canales en Configuración .

Personaliza tu lista de canales.
Figura 14. Personalice su lista de canales.

EPG

Los desarrolladores de entradas de terceros deben tener la confianza de que los usuarios pueden navegar fácilmente a sus canales durante el uso general, en todos los dispositivos Android TV compatibles.

Los canales de entradas de terceros deben presentarse como parte de la experiencia de TV en vivo estándar del dispositivo EPG. Se puede utilizar la separación visual o categorías separadas para canales de terceros (consulte la sección de la aplicación de TV del CDD de Android): la clave es que los usuarios puedan encontrar los canales que han instalado.

Los fabricantes deben implementar la aplicación de TV para incluir resultados de búsqueda para solicitudes de búsqueda global con el fin de garantizar la mejor experiencia de usuario. Live TV proporciona una implementación (ver com.android.tv.search.TvProviderSearch ) que proporciona resultados de entradas de terceros (necesarias para la compatibilidad de la plataforma), así como entradas integradas.

Cambio de hora

Para dispositivos con Android 6.0 y superior, la aplicación de TV debe admitir las API de cambio de tiempo del marco de Android. Además, los fabricantes deben implementar controles de reproducción en la aplicación de TV, que permiten a los usuarios pausar, reanudar, rebobinar y avanzar rápidamente la reproducción.

Para las entradas de TV que admiten cambios de hora, la aplicación de TV debe mostrar los controles de reproducción.

Controles de reproducción
Figura 15. Controles de reproducción

DVR

Para dispositivos con Android 7.0 y versiones posteriores, la aplicación de TV debe admitir las API de grabación de TV marco de Android para admitir, enumerar y reproducir programas grabados.

Esto permite a los fabricantes de dispositivos conectar sus subsistemas DVR a TIF y reducir drásticamente el esfuerzo de integración que se requiere para habilitar o integrar la funcionalidad DVR en un dispositivo de TV. También permite que terceros proporcionen sistemas DVR del mercado de accesorios que se pueden conectar a un dispositivo Android TV.

Además de grabar contenido en vivo, la aplicación de TV también maneja conflictos de recursos. Por ejemplo, si el dispositivo tiene dos sintonizadores, puede grabar dos programas al mismo tiempo. Si el usuario solicita grabar tres, la aplicación de TV debe manejar el conflicto y debe mostrar una notificación o solicitar que el usuario programe una prioridad para estas solicitudes.

Las aplicaciones de TV también pueden implementar una lógica más sofisticada, como preguntarle a un usuario si desea grabar todos los episodios futuros de una serie cuando solicitan grabar un episodio.

Consulte el siguiente diagrama para ver una posible implementación de DVR en Android TV.

Grabación de video digital en Android TV
Figura 16. Grabación de video digital en Android TV

  1. El servicio de entrada de TV le dice a la aplicación de TV cuántos sintonizadores hay disponibles para que la aplicación de TV pueda manejar posibles conflictos de recursos.
  2. La aplicación de TV recibe una solicitud iniciada por el usuario para grabar un programa de TV.
  3. La aplicación de TV almacena el horario de grabación en su base de datos interna.
  4. Cuando llega el momento de grabar, la aplicación de TV pasa una solicitud para sintonizar el canal asociado con la grabación.
  5. El servicio de entrada de TV recibe esta solicitud, responde con o sin recursos apropiados y sintoniza el canal.
  6. Luego, la aplicación de TV pasa una solicitud para comenzar a grabar al Administrador de entrada de TV.
  7. El servicio de entrada de TV recibe esta solicitud y comienza a grabar.
  8. El servicio de entrada de TV almacena los datos de video reales en su almacenamiento, que puede ser almacenamiento externo o almacenamiento en la nube.
  9. Cuando llega el momento de finalizar la grabación, la aplicación de TV pasa la solicitud de detención de grabación al Administrador de entrada de TV.
  10. Una vez que el servicio de entrada de TV recibe la solicitud, detiene la grabación y agrega sus metadatos asociados al proveedor de TV para que la aplicación de TV pueda mostrar la grabación a los usuarios cuando se les solicite.

Para obtener más información sobre la implementación de las funciones de grabación en su servicio de entrada de TV, consulte este artículo de Grabación de TV .

Recursos utiles

  • El CDD de Android y las API de desarrollador documentadas son las referencias definitivas.
  • CTS Verifier ejerce las API como parte del programa de pruebas de compatibilidad. Ejecutar esto contra Live TV puede ser una forma útil de ver la EPG, la búsqueda, el control parental y otros requisitos en el contexto de las entradas de terceros.
  • Consulte Definir su servicio de entrada de TV para conocer las expectativas de los desarrolladores en esta área.

Control parental

El control parental permite que un usuario bloquee canales y programas no deseados, pero evita el bloqueo ingresando un código PIN.

La responsabilidad de la funcionalidad de control parental se comparte entre la aplicación de TV, el servicio TV Input Manager, el proveedor de TV y la entrada de TV.

El control parental es obligatorio y está cubierto por CTS Verifier.

Varios países han definido sistemas de clasificación que las entradas de TV pueden usar a través de la API TVContentRating . Además, las entradas de TV pueden registrar sus propios sistemas de calificación personalizados como lo demuestra la prueba del verificador CTS, que introduce una calificación 'falsa'. Para los países donde existe un sistema de clasificación estándar, se alienta a los fabricantes de dispositivos a combinar el Control Parental del Marco de Entrada de TV con cualquier otro mecanismo que puedan incluir.

Proveedor de TV

Cada fila de canal tiene un campo COLUMN_LOCKED que se usa para bloquear la visualización de canales específicos sin ingresar un código PIN. El campo del programa COLUMN_CONTENT_RATING está destinado a la visualización y no se utiliza para imponer el control parental.

Administrador de entrada de TV

El TV Input Manager almacena cada TvContentRating bloqueado y responde a isRatingBlocked() para avisar si el contenido con la clasificación dada debe bloquearse.

Entrada de TV

La entrada de TV verifica si el contenido actual debe bloquearse llamando isRatingBlocked() en el Administrador de entrada de TV cuando la clasificación del contenido mostrado ha cambiado (en el cambio de programa o canal), o la configuración del control parental ha cambiado (en ACTION_BLOCKED_RATINGS_CHANGED y ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) . Si el contenido se debe bloquear, la entrada de TV deshabilita el audio y el video y notifica a la aplicación de TV que el contenido actual está bloqueado llamando a notifyContentBlocked(TvContentRating) . Si el contenido no debe bloquearse, la entrada de TV habilita audio y video y notifica a la aplicación de TV que el contenido actual está permitido llamando a notifyContentAllowed() .

Aplicación de TV

Para honrar las API de control parental y, por lo tanto, crear una plataforma compatible, la aplicación de TV del sistema debe proporcionar una forma para que los usuarios administren el control parental, incluso para cualquier calificación personalizada registrada por aplicaciones específicas.

La aplicación de TV muestra una interfaz de usuario de código PIN cuando una entrada de TV le notifica que el contenido actual está bloqueado o cuando el usuario intenta ver un canal bloqueado.

La aplicación de TV no almacena directamente la configuración del control parental. Cuando el usuario cambia la configuración del control parental, el TV Input Manager almacena cada TvContentRating bloqueado y el Proveedor de TV almacena los canales bloqueados.

La aplicación de TV debe declarar el permiso android.permission.MODIFY_PARENTAL_CONTROLS para cambiar la configuración del control parental.

Se recomienda a los fabricantes de dispositivos que:

  • Realice la prueba de control parental de CTS Verifier contra la aplicación de TV en vivo de referencia para obtener una demostración de los requisitos de compatibilidad.
  • Use la aplicación Live TV como referencia para su propia aplicación de TV: en particular, vea la fuente ContentRatingsManager y RatingSystemsFragment , y cómo manejan las calificaciones personalizadas.

HDMI-CEC

HDMI-CEC permite que un dispositivo controle a otro, permitiendo así que un solo control remoto controle múltiples dispositivos en un sistema de cine en casa. Es utilizado por Android TV para acelerar la configuración y permitir un control distante sobre varias entradas de TV a través de la aplicación de TV central. Por ejemplo, puede cambiar entradas, encender o apagar dispositivos y más.

El Android TIF implementa HDMI-CEC como el Servicio de Control HDMI, por lo que los fabricantes de dispositivos simplemente necesitan desarrollar controladores de bajo nivel que interactúen con el Android TV HAL ligero, omitiendo la lógica empresarial más compleja. Al proporcionar una implementación estándar, Android busca mitigar los problemas de compatibilidad al reducir las implementaciones fragmentadas y el soporte de funciones selectivas. El servicio de control HDMI utiliza los servicios de Android existentes, incluidas la entrada y la alimentación.

Esto significa que las implementaciones existentes de HDMI-CEC deberán rediseñarse para interactuar con el TIF de Android. Recomendamos que la plataforma de hardware contenga un microprocesador para recibir el encendido CEC y otros comandos.

Integración CEC en Android TV
Figura 17. Integración de CEC en Android TV

  1. El bus CEC recibe un comando de la fuente actualmente activa para cambiar a una fuente diferente.
  2. El controlador pasa el comando al HDMI-CEC HAL.
  3. El HAL notifica a todos los ActiveSourceChangeListeners .
  4. El Servicio de Control HDMI recibe una notificación de cambio de fuente a través de ActiveSourceChangeListener .
  5. El servicio TV Input Manager genera una intención para que la aplicación de TV cambie la fuente.
  6. Luego, la aplicación de TV crea una sesión de Administrador de entrada de TV para la entrada de TV a la que se cambia y llama a setMain en esa sesión.
  7. La sesión del Administrador de entrada de TV pasa esta información a la entrada de TV HDMI.
  8. La entrada de TV HDMI solicita configurar la superficie de la banda lateral.
  9. El servicio TV Input Manager genera un comando de control de enrutamiento correspondiente al servicio de control HDMI cuando se establece la superficie.

Pautas de integración de TV

Aplicación de difusión

Debido a que cada país tiene requisitos específicos de transmisión (MHEG, Teletexto, HbbTV y más), se espera que los fabricantes proporcionen sus propias soluciones para la aplicación de transmisión, por ejemplo:

  • MHEG: pila nativa
  • Teletexto: pila nativa
  • HbbTV: solución HbbTV de Vewd Software

En el lanzamiento de Android L, Android TV espera que los fabricantes de dispositivos usen integradores de sistemas o soluciones de Android para las pilas de TV regionales, pasen la superficie a las pilas de software de TV o pasen el código clave necesario para interactuar con las pilas heredadas.

Así es como interactúan la aplicación de transmisión y la aplicación de TV:

  1. La aplicación de TV está enfocada y recibe todas las claves.
  2. La aplicación de TV pasa las teclas (por ejemplo, el botón rojo) al dispositivo de entrada de TV.
  3. El dispositivo de entrada de TV se integra internamente con la pila de TV heredada.
  4. Al recibir un código clave de activación (p. Ej., Botón rojo), el dispositivo de entrada de TV activa las aplicaciones de transmisión.
  5. Una aplicación de transmisión se enfoca en la aplicación de TV y maneja las acciones del usuario.

Para la búsqueda / recomendación por voz, la aplicación de transmisión puede admitir la búsqueda en la aplicación para la búsqueda por voz.