Google is committed to advancing racial equity for Black communities. See how.
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 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 o requisitos regionales, pero 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 ser útil para desarrolladores de aplicaciones de terceros que deseen crear entradas de TV personalizadas.

Componentes

La implementación de Android TV Input Framework incluye un TV Input Manager. 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 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 de TV Input Manager.

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
  • TV Input Manager ( 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 puertos de entrada y sintonizadores físicos o virtuales
  • TV Input HAL ( tv_input module): 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 permite el bloqueo de canales y programas.
  • HDMI-CEC: la tecnología que permite 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 administrar 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 hablar directamente con las entradas de TV. TV Input Manager 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 y la aplicación de TV de signatureOrSystem tienen acceso completo a la base de datos de proveedores de TV y pueden recibir KeyEvents.
  • Solo las entradas de TV del sistema pueden acceder a TV Input 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 por 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 el contenido de las entradas de TV de paso del fabricante del dispositivo, como HDMI1. No pueden mostrar contenido de entradas de TV que no pasen a través, como un sintonizador integrado o de IPTV.
  • TV_INPUT_HARDWARE permiso TV_INPUT_HARDWARE para una aplicación de entrada de TV de hardware, indica al servicio TV Input Manager que notifique al servicio TV Input en el arranque para llamar al servicio TV Input Manager 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 TV Inputs pueda ver solo 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 cualquier otra entrada de TV.

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

Solo las aplicaciones en la partición del sistema con privilegios pueden leer toda la base de datos del proveedor de TV.

Las entradas de TV de paso a través 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 una memoria intermedia 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 específicos del país para la protección de contenido).

Ejemplos de campos 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 ). Estas tablas se completan y se accede a ellas mediante entradas de TV y 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 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 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 marca representan si un canal debe estar restringido para la búsqueda, exploración o visualización. Esto se puede configurar solo a nivel de canal. Todos los programas dependen 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 aparecer en los resultados de búsqueda.
    • COLUMN_BROWSABLE : visible solo para aplicaciones del sistema. Restringir el canal para que no sea explorado por 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 lo vean 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 cualquiera que tenga acceso a la fila correspondiente. Los usuarios no pueden acceder directamente a ningún campo; solo ven lo que aparecen en la aplicación de TV, las aplicaciones del sistema o las entradas de TV.

  • Cada fila tiene PACKAGE_NAME , el paquete (aplicación) que posee 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á separada de la información proporcionada por otras entradas de TV.
  • LEER, ESCRIBIR 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 de sistema central para el marco de entrada general de Android TV. Arbitra la interacción entre las aplicaciones y las entradas de TV y proporciona la funcionalidad de control parental. Las sesiones de TV Input Manager deben crearse uno a uno con TV Inputs. El Administrador de entradas de TV permite el acceso a las entradas de TV instaladas para que las aplicaciones puedan:

  • Enumere las entradas de TV y verifique su estado
  • Crea sesiones y gestiona oyentes

Para las sesiones, la aplicación de TV puede sintonizar una entrada de TV solo en los URI que ha agregado a la base de datos del proveedor de TV, excepto para las entradas de TV de paso a través, que se pueden sintonizar mediante TvContract.buildChannelUriForPassthroughInput() . Una entrada de TV también puede tener su volumen ajustado. 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 del proveedor de TV. Este acceso se puede utilizar para crear 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 devuelva la llamada en el cambio de estado de una entrada de TV o en la adición o eliminación de una entrada de TV. Por ejemplo, una aplicación de TV puede reaccionar cuando se desconecta una entrada de TV mostrándola como desconectada y evitando su selección.

TV Input Manager 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 mientras 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 puede proporcionarlas el fabricante, ya que hablan directamente con el hardware subyacente. Otros, como IPTV, cambio de lugar y STB externo, pueden ser suministrados 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 a través

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

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 que se usa para hacer referencia a la entrada de paso a través, usa 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 integrado de Android TV

En este ejemplo, la entrada de TV del 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 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)

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 la 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 los códigos de escaneo de hardware en códigos de tecla de Android y pasándolos a las funciones InputReader y InputDispatcher canalización de entrada estándar de Android como KeyEvents . Estos, a su vez, desencadenan 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é InputEvents 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é entrada de TV del sistema está activa, es decir, seleccionada por el usuario, y de 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 del TIF de Android.

Ejemplo de botón rojo de Android TV
Figura 7. Ejemplo de 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 usar estas aplicaciones de transmisión para acceder a páginas web relacionadas o resultados 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

TV Input HAL ayuda al desarrollo de TV Inputs para acceder a hardware específico de TV. Al igual que con otros HAL de Android, TV Input HAL ( 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, personalizarla, ampliarla o reemplazarla. El código fuente está disponible en el Proyecto de código abierto de Android, y puede comenzar con él 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 país o del fabricante del dispositivo, 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 realizar las siguientes tareas:

Instalación y configuración

  • Detección automática de entradas de TV
  • Deje que TV Inputs inicie la configuración del canal
  • Controlar la configuración de los padres
  • Editar canales

Visita

  • Accede y navega por todos los canales de televisión
  • Acceder a la barra de información de programas 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 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.)
  • Completar los resultados de búsqueda de canales y programas de TV
  • Mostrar tarjetas de vinculación de aplicaciones
  • Soporta API de Timeshifting
  • 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 de TIF de la plataforma. CTS Verifier proporciona la cobertura de la 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 de dispositivo Android compatible, la aplicación de TV del sistema tiene algunas responsabilidades con respecto a la presentación de entradas y canales de TV de terceros para el usuario. La aplicación de referencia Live TV 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 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 los canales integrados y los canales de terceros, según 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 canal nuevo

La adición de nuevas entradas / canales de terceros comienza cuando el usuario encuentra e instala una entrada de TV de 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 referencia de TV en vivo proporciona el menú Fuentes de 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 canal en Configuración.

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

Agrega canales de 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 que hay nuevas fuentes de canales disponibles.
Figura 12. Notificación que muestra que hay 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. Live TV 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 EPG del dispositivo. Se puede usar una separación visual o categorías separadas para canales de terceros (consulte la sección de aplicaciones de TV del CDD de Android); lo que es 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 a fin de garantizar la mejor experiencia de usuario. Live TV proporciona una implementación (consulte 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 trabajo 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 adelantar la reproducción.

Para las entradas de TV que admiten el cambio de hora, 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 ser compatible con las API de grabación de TV del marco de trabajo 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 necesita para habilitar o integrar la funcionalidad DVR en un dispositivo de TV. También permite que terceros proporcionen sistemas DVR de mercado secundario 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 le gustaría 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 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 están 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 programa de grabación en su base de datos interna.
  4. Cuando llega el momento de grabar, la aplicación de TV transmite 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 los 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 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 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 lo soliciten.

Para obtener más información sobre cómo implementar las funciones de grabación en su servicio de entrada de TV, consulte este artículo sobre 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 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 al usuario bloquear canales y programas no deseados, pero eludir el bloqueo ingresando un código PIN.

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

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 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 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 de programa COLUMN_CONTENT_RATING está destinado a la visualización y no se utiliza para aplicar el control parental.

Administrador de entrada de TV

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 a isRatingBlocked() en el Administrador de entrada de TV cuando la calificació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 debe bloquearse, 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 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 TV

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, incluso para las calificaciones personalizadas registradas por aplicaciones específicas.

La aplicación de TV muestra una IU 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 Administrador de entrada de TV 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 anima a los fabricantes de dispositivos a:

  • Realice la prueba de control parental de CTS Verifier con la aplicación de TV en vivo de referencia para 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, consulte la fuente ContentRatingsManager y RatingSystemsFragment , y cómo manejan las calificaciones personalizadas.

HDMI-CEC

HDMI-CEC permite que un dispositivo controle a otro, lo que permite que un solo control remoto controle varios dispositivos en un sistema de cine en casa. Android TV lo utiliza para acelerar la configuración y permitir un control a distancia 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.

Android TIF implementa HDMI-CEC como el servicio de control HDMI para que los fabricantes de dispositivos simplemente necesiten desarrollar controladores de bajo nivel que interactúen con el ligero Android TV HAL, saltándose 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, incluida la entrada y la alimentación.

Esto significa que las implementaciones HDMI-CEC existentes deberán rediseñarse para interoperar con el TIF de Android. Recomendamos que la plataforma de hardware contenga un microprocesador para recibir el encendido del 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 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 TV Input Manager para la entrada de TV a la que se cambia y llama a setMain en esa sesión.
  7. La sesión de TV Input Manager pasa esta información a la entrada de TV HDMI.
  8. La entrada de TV HDMI solicita configurar la superficie de banda lateral.
  9. El servicio TV Input Manager genera un comando de control de enrutamiento correspondiente de regreso 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 de Android L, Android TV espera que los fabricantes de dispositivos utilicen integradores de sistemas o las 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 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 (por ejemplo, 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.