Marco de entrada de TV

Icono HAL de Android TV

Android TV Input Framework (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 y recomendaciones de TV en vivo a través de metadatos publicados por TV Input.

El marco no busca implementar estándares de televisión ni requisitos regionales, pero sí facilita que los fabricantes de dispositivos cumplan con los estándares regionales de transmisión de televisión digital sin tener que volver a implementarlos. La documentación de esta sección también puede resultar útil para los desarrolladores de aplicaciones de terceros que quieran 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 TV, una aplicación del sistema que no puede ser reemplazada por una aplicación de terceros, para acceder a los canales integrados y del sintonizador 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 entradas 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 y puertos de entrada físicos o virtuales
  • Entrada de TV HAL (módulo tv_input ): una definición de hardware que permite que las entradas de TV del sistema accedan al hardware específico de TV cuando se implementa.
  • Control Parental: la tecnología que permitirá bloquear canales y programas
  • HDMI-CEC: la tecnología que permitirá el control remoto de varios dispositivos a través de HDMI
  • Tuner Framework: un marco para la entrada de TV con sintonizador integrado
  • MediaCas: un marco para el acceso condicional
  • Tuner Resource Manager: un servicio para gestionar los recursos de hardware para la entrada de TV, MediaCas y la entrada del sintonizador integrado.

Estos componentes se tratan 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 TIF de Android
Figura 1. Arquitectura del marco de entrada de Android TV (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 comunicarse directamente con las entradas de TV. El Administrador de entradas de TV identifica el estado de las entradas de TV para la aplicación de TV. Consulte TV Input Manager a continuación para obtener más detalles sobre estas limitaciones.

Permisos

  • Solo las entradas de TV signatureOrSystem y la aplicación de TV tienen acceso completo a la base de datos del proveedor de TV y pueden recibir eventos clave.
  • Solo las entradas de TV del sistema pueden acceder a la entrada de TV HAL a través del servicio TV Input Manager. Se accede a las entradas de TV uno a uno a través de sesiones de TV Input Manager.
  • Las entradas de TV de terceros tienen acceso bloqueado a paquetes a la base de datos del proveedor de TV y pueden LEER/ESCRIBIR solo en filas de paquetes coincidentes.
  • Las entradas de TV de terceros pueden mostrar su propio contenido o contenido de las entradas de TV de paso del fabricante de un dispositivo, como HDMI1. No pueden mostrar contenido de entradas de TV que no sean de paso, como un sintonizador integrado o de IPTV.
  • El permiso TV_INPUT_HARDWARE para una aplicación de entrada de TV de hardware indica al servicio de administrador de entrada de TV que notifique al servicio de entrada de TV al iniciar para llamar al servicio de administrador 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 televisión

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 puede ver solo los canales y programas que ha proporcionado y tiene prohibido acceder a los canales y programas de otras entradas de TV.

El proveedor de TV asigna internamente el "género de transmisión" al "género canónico". Las entradas de TV son responsables de completar 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 un programa con 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 asignado 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

Sólo las aplicaciones en la partición privilegiada del sistema pueden leer toda la base de datos del proveedor de TV.

Las entradas de TV de paso no almacenan canales ni 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 (por ejemplo, para cumplir con los requisitos de protección de contenido específicos de cada país).

Ejemplos de campos de bases de datos

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

  • Pantalla: los campos de pantalla contienen información que las aplicaciones pueden querer hacer visible para el usuario, como el nombre de un canal ( COLUMN_DISPLAY_NAME ) o número ( COLUMN_DISPLAY_NUMBER ), o el título del programa que se está viendo.
  • Metadatos: hay tres campos para identificar el contenido, de acuerdo con los estándares relevantes, como el ID del flujo de transporte de un canal ( COLUMN_TRANSPORT_STREAM_ID ), el ID de la red original ( COLUMN_ORIGINAL_NETWORK_ID ) y el ID del 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.
  • Bandera: Los campos de bandera representan si se debe restringir la búsqueda, navegación o visualización de un canal. Esto sólo se puede configurar a nivel de canal. Todos los programas se rigen por la configuración del canal.
    • COLUMN_SEARCHABLE : restringir la búsqueda desde algunos canales puede ser un requisito en determinadas regiones. COLUMN_SEARCHABLE = 0 significa que el canal no debe aparecer en los resultados de búsqueda.
    • COLUMN_BROWSABLE : Visible solo para aplicaciones del sistema. Restringir la navegación por el canal por parte de 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 que no sea visto por cuentas no vá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 aparece en la aplicación de TV, las aplicaciones del sistema o las entradas de TV.

  • Cada fila tiene PACKAGE_NAME , el paquete (aplicación) propietario de esa fila, marcado en Consulta, Insertar, Actualizar a través de TvProvider.java. Una entrada de TV puede acceder solo a la información que escribió y está aislada de la información proporcionada por otras entradas de TV.
  • Permisos de LEER y ESCRIBIR 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 de 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 individualmente con TV Inputs. El Administrador de entradas de TV permite el acceso a las entradas de TV instaladas para que las aplicaciones puedan:

  • Listar las entradas de TV y comprobar su estado
  • Crear sesiones y administrar oyentes

Para las sesiones, la aplicación de TV puede sintonizar una entrada de TV solo a los URI que haya agregado a la base de datos del proveedor de TV, excepto las entradas de TV de paso 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 exclusivas) u otras aplicaciones instaladas en la partición del sistema tendrán acceso a toda la base de datos del proveedor de TV. Este acceso se puede utilizar para crear aplicaciones para navegar y buscar en todos los canales y programas de televisión disponibles.

Una aplicación puede crear y registrar un TvInputCallback con android.media.tv.TvInputManager para que se le vuelva a llamar cuando se cambia el estado de una entrada de TV o cuando se agrega o elimina una entrada de TV. Por ejemplo, una aplicación de TV puede reaccionar cuando se desconecta una entrada de TV mostrándola como desconectada e impidiendo su selección.

El Administrador de entradas 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 permite a varios fabricantes de dispositivos crear sus propias aplicaciones de TV y, al mismo tiempo, ayuda 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 descargadas). Android TV admite aplicaciones del 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 las puede proporcionar el fabricante, ya que hablan directamente con el hardware subyacente. Otros, como IPTV, cambio de lugar y STB externos, pueden ser proporcionados por terceros como APK en Google Play Store. Una vez descargada e instalada, la nueva entrada se puede seleccionar dentro de la aplicación de TV.

Ejemplo de entrada de paso

Entrada del sistema 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 de paso, no registra ningún canal o programa con el proveedor de TV. Para obtener el URI utilizado para hacer referencia a la entrada de transferencia, use el método de la 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 incorporada de Android TV
Figura 4. Entrada del sintonizador integrado de Android TV

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

Ejemplo de entrada de terceros

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

En este ejemplo, la entrada de TV STB externa la proporciona un tercero. Dado que esa entrada de TV no puede acceder directamente a la señal de video HDMI entrante, 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 la entrada de TV HDMI proporcionada por el fabricante reproduce el video.

Ejemplo de imagen en imagen (PIP)

Eventos clave de Android TV
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 visualización de imagen en imagen (PIP). Esas pulsaciones de botones son interpretadas por el controlador de hardware proporcionado por el fabricante del dispositivo, convirtiendo códigos de escaneo de hardware en códigos clave de Android y pasándolos a las funciones estándar de entrada de Android InputReader y InputDispatcher como KeyEvents . Estos, a su vez, activan eventos en la aplicación de TV si está enfocada.

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 claves que no necesita consumir.

La aplicación de TV es responsable de saber qué entrada de TV del sistema está activa, es decir, seleccionada por el usuario, y de eliminar la ambigüedad KeyEvents entrantes y enrutarlos a la sesión correcta del Administrador de entrada de TV, 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 KeyEvents a través del TIF de Android.

Ejemplo del 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 este flujo de transporte. Cuando se hace clic en el botón, los usuarios pueden interactuar con estas aplicaciones de transmisión. Por ejemplo, puede utilizar estas aplicaciones de transmisión para acceder a páginas web relacionadas o resultados deportivos.

Consulte la sección de aplicaciones de transmisión para saber cómo interactúan las aplicaciones de transmisión con la aplicación de TV.

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

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

Nota : a partir de Android 14, la interfaz HAL de entrada de TV se define mediante AIDL .

Aplicación de televisión

La aplicación de TV del sistema presenta contenido de TV en vivo al usuario. Se proporciona una aplicación de TV de referencia (Live TV) junto con la plataforma Android, que los fabricantes de dispositivos pueden usar tal como está, personalizarla, ampliarla o reemplazarla. El código fuente está disponible en el Proyecto de código abierto de Android y puede comenzar a utilizarlo en el artículo de la aplicación Reference TV .

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

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

Instalación y configuración

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

Visita

  • Accede y navega por todos los canales de TV.
  • Acceder 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
  • Proporcionar desafío de PIN de control parental
  • Permitir la superposición de la interfaz de usuario de entrada de TV para el estándar de TV (HbbTV, etc.)
  • Complete los resultados de búsqueda de canales y programas de TV
  • Mostrar tarjetas de vinculación de aplicaciones
  • Admite API de timeshifting
  • Maneje la funcionalidad DVR y admita API de grabación de TV

Este conjunto de funciones aumentará en línea con las nuevas versiones de Android en las que se amplían las API TIF de la plataforma. CTS Verifier proporciona 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 a la experiencia de TV en vivo. Para garantizar una implementación de dispositivo Android compatible, la aplicación de TV del sistema tiene algunas responsabilidades con respecto a mostrar al usuario entradas y canales de TV de terceros. La aplicación Live TV de referencia proporciona una implementación compatible; Si se reemplaza la aplicación de TV del sistema, los fabricantes de dispositivos deben asegurarse de que sus propias aplicaciones brinden una compatibilidad similar para cumplir con las expectativas de los desarrolladores en todos los dispositivos de TV con 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 para desarrolladores es que los usuarios podrán encontrar canales (una vez instalados) dentro de su experiencia televisiva estándar.

Se permite la diferenciación visual entre canales integrados y canales de terceros, como se define en la sección 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.

Configuración de nuevo 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 automáticamente canales 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 fuera de la aplicación de TV principal.

La aplicación Live TV de referencia proporciona el menú Fuentes de canales para acceder a las entradas.

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

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

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

Añade 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:

Notificación que muestra nuevas fuentes de canales disponibles.
Figura 12. Notificación que muestra que hay nuevas fuentes de canales disponibles.

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

Consulte Defina 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. La televisión en vivo incluye esta funció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. Personaliza tu lista de canales.

EPG

Los desarrolladores de entradas de terceros deben tener confianza en que los usuarios puedan 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 EPG de experiencia de TV en vivo estándar del dispositivo. Se puede utilizar separación visual o categorías separadas para canales de terceros (consulte la sección 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 globales a fin de garantizar la mejor experiencia de usuario. Live TV proporciona una implementación (consulte que proporciona resultados de entradas de terceros (requeridas 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 trabajo de Android. Además, los fabricantes deben implementar controles de reproducción en la aplicación de TV, que permitan a los usuarios pausar, reanudar, rebobinar y avanzar rápidamente la reproducción.

Para las entradas de TV que admiten cambio de tiempo, la aplicación de TV debe mostrar controles de reproducción.

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

DVR

Para dispositivos con Android 7.0 y superior, la aplicación de TV debe admitir las API de grabación de TV del 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 necesario para habilitar o integrar la funcionalidad DVR en un dispositivo de TV. También permite a terceros proporcionar sistemas DVR no originales 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, podrá 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 solicita grabar un episodio.

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

Grabación de vídeo digital en Android TV
Figura 16. Grabación de vídeo digital en Android TV

  1. El servicio de entrada de TV le indica 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 cronograma de grabación en su base de datos interna.
  4. Cuando llega el momento de grabar, la aplicación de TV envía una solicitud para sintonizar el canal asociado con la grabación.
  5. El servicio de entrada de TV recibe esta solicitud, responde si hay o no recursos adecuados y sintoniza el canal.
  6. Luego, la aplicación de TV envía 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 un almacenamiento externo o un almacenamiento en la nube.
  9. Cuando llega el momento de finalizar la grabación, la aplicación de TV pasa la solicitud de detener la 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 la soliciten.

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

Recursos útiles

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

Control parental

El control parental permite al usuario bloquear 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 TV Input.

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

Varios países han definido sistemas de clasificación que TV Inputs pueden utilizar a través de la API TVContentRating . Además, las entradas de TV pueden registrar sus propios sistemas de clasificación personalizados, como lo demuestra la prueba CTS Verifier, que introduce una clasificación "falsa". Para los países donde existe un sistema de clasificación estándar, se recomienda a los fabricantes de dispositivos que combinen el control parental del marco de entrada de TV con cualquier otro mecanismo que puedan incluir.

proveedor de televisión

Cada fila de canal tiene un campo COLUMN_LOCKED que se utiliza para bloquear la visualización de canales específicos sin ingresar un código PIN. El campo del programa COLUMN_CONTENT_RATING está diseñado para mostrarse 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 se debe bloquear el contenido con la clasificación dada.

Entrada de televisión

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 (al cambiar 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 se debe bloquear el contenido, la entrada de TV desactiva 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 el audio y el video y notifica a la aplicación de TV que el contenido actual está permitido llamando a notifyContentAllowed() .

Aplicación de televisión

Para respetar 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, incluidas las calificaciones personalizadas registradas 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, cada TvContentRating bloqueado es almacenado por el Administrador de entrada de TV y los canales bloqueados son almacenados por el Proveedor de TV.

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

Se anima a los fabricantes de dispositivos a:

  • Realice la prueba de controles parentales de CTS Verifier con la aplicación Live TV de referencia para demostrar los requisitos de compatibilidad.
  • Utilice la aplicación Live TV como referencia para su propia aplicación de TV: en particular, consulte 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 único control remoto controle múltiples aparatos en un cine en casa. Android TV lo utiliza para acelerar la configuración y permitir el control remoto de 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.

Android TIF implementa HDMI-CEC como servicio de control HDMI, de modo que los fabricantes de dispositivos simplemente necesitan desarrollar controladores de bajo nivel que interactúen con el liviano Android TV HAL, omitiendo una lógica comercial más compleja. Al proporcionar una implementación estándar, Android busca mitigar los problemas de compatibilidad reduciendo las implementaciones fragmentadas y el soporte selectivo de funciones. El Servicio de control HDMI utiliza los servicios existentes de Android, incluidos los de entrada y alimentación.

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

Integración de 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. HAL notifica a todos ActiveSourceChangeListeners .
  4. El servicio de control HDMI recibe una notificación del 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 que se está cambiando y llama 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 HDMI TV solicita configurar la superficie de banda lateral.
  9. El servicio TV Input Manager genera un comando de control de enrutamiento correspondiente al servicio de control HDMI cuando se configura la superficie.

Pautas de integración de TV

Aplicación de transmisió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 la versión Android L, Android TV espera que los fabricantes de dispositivos utilicen integradores de sistemas o soluciones de Android para pilas de TV regionales, pasen la superficie a pilas de software de TV o pasen el código clave necesario para interactuar con 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 claves (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 anterior.
  4. Al recibir un código clave de activación (por ejemplo, un botón rojo), el dispositivo de entrada de TV activa las aplicaciones de transmisión.
  5. Una aplicación de transmisión se centra en la aplicación de TV y maneja las acciones del usuario.

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