Обзор

Стек радиовещания состоит из компонентов, показанных на рисунке 1.

Архитектура радиовещания
Рисунок 1. Архитектура радиовещания.

Справочное приложение по радио

Подробности о том, как реализовать радиоуправление, см. в разделе Реализация радиоуправления .

Пример радиоприложения Java ( packages/apps/Car/Radio ) служит эталонной реализацией. Когда служба приложения запускается, она запрашивает Radio Manager открыть радиотюнер. Затем приложение может отправлять запросы радиотюнеру, например настройку на определенную радиостанцию, частоту или поиск следующей доступной радиостанции. Приложение получает обновления от Radio Manager и Radio Tuner в Radio, такие как информация о текущих программах, списки радиопрограмм, конфигурации и параметры, определенные поставщиком. Эталонное приложение «Радио» поддерживает только радио AM и FM. OEM-производители могут изменить или заменить приложение Radio по своему усмотрению.

Радио-менеджер

Когда приложение запрашивает Radio Manager открыть тюнер, Radio Manager ( frameworks/base/core/java/android/hardware/radio/RadioManager.java ) запрашивает службу радиовещания (BRS) для открытия сеанса тюнера, а затем завершает сеанс радиовещания. сеанс в радиотюнере ( frameworks/base/core/java/android/hardware/radio/RadioTuner.java ), который возвращается в приложение. Радиотюнер определяет API (такие как настройка, шаг и отмена), которые можно вызывать из радиоприложений и отправлять запросы в BRS. Методы обратного вызова ( RadioTuner.Callback ), определенные в Radio Tuner, отправляют обновления о HAL широковещательного радио, такие как информация о текущей программе, списки программ и параметры, определенные поставщиком, из BRS в приложения.

Служба радиовещания

Служба широковещательного радио ( frameworks/base/services/core/java/com/android/server/broadcastradio ) — это клиентская служба для Broadcast Radio HAL. BRS координирует работу нескольких радиоменеджеров с HAL вещательного радио. BRS поддерживает язык определения интерфейса HAL (HIDL) и язык определения интерфейса Android (AIDL) для радиовещания HAL. BRS подключается к AIDL HAL, когда существует какая-либо служба AIDL HAL; в противном случае служба ссылается на HIDL HAL. BRS создает радиомодуль для каждого доступного экземпляра HAL (например, AM, FM и DAB).

Каждый радиоменеджер может запросить BRS создать сеанс тюнера на соответствующем радиомодуле в зависимости от типа радиомодуля. Каждый сеанс тюнера может вызывать методы, такие как настройка, шаг и отмена (определенные в интерфейсах HAL), для выполнения операций над соответствующим экземпляром HAL широковещательной радиосвязи. Когда один сеанс тюнера получает обратный вызов от экземпляра HAL при обновлении HAL, такой как информация о текущей программе, список программ, флаги конфигурации и параметры поставщика, обратные вызовы об обновлении отправляются всем радиотюнерам, связанным с одним и тем же радиомодулем.

Радиовещание HAL

Чтобы узнать больше об интерфейсах HIDL и AIDL радиовещания и различиях между ними, см. Интерфейс HAL Broadcast Radio .