Android 的音频硬件抽象层 (HAL) 可将 android.media
中较高层级的音频专用框架 API 连接到底层的音频驱动程序和硬件。音频 HAL 定义了音频服务会调用的标准接口,必须实现音频 HAL 才能使音频硬件正常运行。
本页将概述音频 HAL 并详细介绍其 API 和实现要求。
音频 HAL 接口
从 Android 14 开始,使用稳定的 AIDL 定义音频 HAL 接口。对于以前的版本,音频 HAL 接口使用 HIDL 定义。建议合作伙伴和 SoC 供应商重新实现其音频 HAL 以提供 AIDL 接口。
只有在实现 AIDL 接口的情况下,系统才支持适用于 Android 14 及更高版本中所添功能的新 HAL API。从 Android 14 开始,HIDL 实现不再添加新的 API。
改用 AIDL 并废弃和移除对之前的主要音频 HAL 版本的支持可释放设备上的磁盘空间和 RAM。这有助于实现更顺畅的用户体验,并使最终用户能够使用较新的用户可见的功能。
如需详细了解 AIDL 和 HIDL 音频 HAL 之间的区别,请参阅 AIDL 和 HIDL 音频 HAL 比较。
音频 HAL API
音频 HAL 包含以下 API:
- Core HAL 是 AudioFlinger 用于播放音频和控制音频路由的主要 API。
Effects HAL API 供效果框架用于控制音频效果。 您还可以通过 Effects HAL API 配置预处理效果,如自动增益控制和噪音抑制。
Common HAL API 是 Core HAL API 和 Effects HAL API 使用的常用数据类型的库。Common HAL 只定义数据结构,因此没有接口也没有关联的 VTS 测试。
如需了解与 AIDL 和 HIDL 相关的具体详细信息,请参阅 AIDL 音频 HAL 和 HIDL 音频 HAL。
要求
除了实现音频 HAL 并创建音频政策配置文件外,您还必须遵循以下 HAL 要求:
如果有一个输入配置文件支持声音触发器捕获(从启动指令 DSP 缓冲区捕获),该实现必须支持此配置文件上与声音触发器 HAL 支持的并发会话数量相对应的活跃声音流数量。
按照并发捕获页面详细介绍的那样,从应用处理器并发进行语音通话 TX 和捕获。