La pila de radio de transmisión consta de los componentes que se ilustran en la Figura 1.
App de referencia de radio
Para obtener más información sobre cómo implementar el control de radio, consulta Implementación del control de radio.
Una app de radio de Java de ejemplo (packages/apps/Car/Radio
) sirve como implementación de referencia. Cuando se inicia el servicio de la app, solicita al Administrador de radio que abra un sintonizador de radio. Luego, la app puede enviar solicitudes al sintonizador de radio, como sintonizar una estación de radio o una frecuencia específicas, o buscar la siguiente estación de radio disponible. La app recibe actualizaciones del Administrador de radio y del sintonizador de radio, como la información del programa actual, las listas de programas de radio, las configuraciones y los parámetros definidos por el proveedor. La app de radio de referencia solo admite radio AM y FM. Los OEMs pueden modificar o reemplazar la app de radio como deseen.
Administrador de radio
Cuando la app solicita al Administrador de radio que abra un sintonizador, el Administrador de radio (frameworks/base/core/java/android/hardware/radio/RadioManager.java
) solicita al servicio de radiodifusión (BRS) que abra una sesión de sintonizador y, luego, une la sesión en un sintonizador de radio (frameworks/base/core/java/android/hardware/radio/RadioTuner.java
), que se muestra a la app. El sintonizador de radio define las APIs (como sintonizar, avanzar y cancelar) a las que se puede llamar desde las apps de radio y enviar solicitudes al BRS. Los métodos de devolución de llamada (RadioTuner.Callback
) definidos en el sintonizador de radio envían actualizaciones sobre el HAL de radio de transmisión, como la información del programa actual, las listas de programas y los parámetros definidos por el proveedor, desde el BRS a las apps.
Servicio de transmisión de radio
El servicio de transmisión de radio (frameworks/base/services/core/java/com/android/server/broadcastradio
) es el servicio cliente de HAL de transmisión de radio. El BRS coordina varios administradores de radio con HAL de radio de transmisión. El BRS admite HAL de radio de transmisión de lenguaje de definición de la interfaz de HAL (HIDL) y lenguaje de definición de la interfaz de Android (AIDL). El BRS se vincula a la HAL de AIDL cuando existe un servicio de HAL de AIDL. De lo contrario, el servicio se vincula a la HAL de HIDL. El BRS crea un módulo de radio para cada instancia de HAL disponible (como AM, FM y DAB).
Cada administrador de radio puede solicitar al BRS que cree una sesión de sintonizador en el módulo de radio correspondiente, según el tipo de radio. Cada sesión del sintonizador puede llamar a métodos, como sintonizar, avanzar y cancelar (definidos en las interfaces de HAL), para realizar operaciones en la instancia de HAL de radio de transmisión correspondiente. Cuando una sesión de sintonizador recibe una devolución de llamada de la instancia de HAL en una actualización de HAL, como la información del programa actual, la lista de programas, las marcas de configuración y los parámetros del proveedor, las devoluciones de llamada sobre la actualización se envían a todos los sintonizadores de radio vinculados al mismo módulo de radio.
HAL de transmisión de radio
Para obtener más información sobre las interfaces HIDL y AIDL de la radiodifusión y las diferencias entre ambas, consulta Interfaz de HAL de la radiodifusión.