概览

广播无线装置堆栈由图 1 所示的组件组成。

广播电台架构
图 1. 广播电台架构。

电台参考应用

如需详细了解如何实现电台控制,请参阅 电台控制实现

Java 电台应用示例 (packages/apps/Car/Radio) 可用作参考 实施。应用服务启动时,它会请求电台管理器打开电台调谐器。然后, 应用可以向电台调谐器发送请求,例如调谐到特定电台、频率、 或寻找下一个可收听的电台。应用接收来自电台管理器的更新,并且 电台中的电台调谐器,例如当前节目信息、电台节目列表、配置和 供应商定义的参数参考电台应用仅支持 AM 和 FM 电台。OEM 可以修改 根据需要替换电台应用。

电台管理器

当应用请求电台管理器打开调谐器时,电台管理器 (frameworks/base/core/java/android/hardware/radio/RadioManager.java) 请求 广播电台服务 (BRS),用于打开调谐器会话,然后将会话封装在电台调谐器中 (frameworks/base/core/java/android/hardware/radio/RadioTuner.java),返回 。 电台调谐器定义了可从电台应用调用的 API(例如调谐、步进和取消) 并向 BRS 发送请求。在电台中定义的回调方法 (RadioTuner.Callback) 调谐器发送有关广播电台 HAL 的更新,例如当前节目信息、节目 列表和供应商定义的参数,从 BRS 到应用。

广播电台服务

广播电台服务 (frameworks/base/services/core/java/com/android/server/broadcastradio) 是客户端 服务。BRS 使用广播电台协调多个电台经理 HAL。BRS 支持 HAL 接口定义语言 (HIDL)Android 接口定义语言 (AIDL) 广播 Radio HAL如果存在任何 AIDL HAL 服务,BRS 会链接到 AIDL HAL; 否则,该服务会关联到 HIDL HAL。BRS 创建电台模块 每个可用的 HAL 实例(例如 AM、FM 和 DAB)。

每个电台管理器都可以请求 BRS 在 相应的无线装置模块,具体取决于无线装置类型。每个调谐器会话都可以调用方法,例如 调整、步进和取消(在 HAL 接口中定义),以对 相应的广播电台 HAL 实例。当一个调谐器会话收到来自 HAL 的回调时 例如当前程序信息、程序列表、配置标记以及 供应商参数,有关更新的回调会发送到与同一个 无线装置模块。

广播电台 HAL

如需详细了解广播电台的 HIDL 和 AIDL 接口,以及它们之间的区别 请参阅 广播 Radio HAL 接口