广播无线装置堆栈由图 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 接口。