从 Android 14 开始,音频 HAL 接口使用 Stable AIDL 定义。我们鼓励合作伙伴和 SoC 供应商重新实现其音频 HAL,以提供 AIDL 接口。
扩展 libaudiohal
库可为 AIDL HAL 添加框架支持。借助 AIDL 实现,音频政策配置规范将移至 AIDL HAL。通过此更改,音频政策管理器 (APM) 可以从 HAL 获取配置,而不是从供应商提供的 XML 文件中使用配置。
音频 AIDL HAL API
本部分介绍了适用于 AIDL 的 Core、Effects 和 Common HAL API。
在实现与内核驱动程序交互的新版音频 HAL 时,请使用 /hardware/interfaces/audio/aidl/default/
处的 AIDL API 默认实现作为参考。
有关 AIDL 的音频 HAL 目录结构,请参阅 Audio HAL README 文件。
Core HAL
以下是使用 AIDL 的 Core HAL 的一些主要接口
IModule.aidl
是 API 的入口点。- 流是单向的,AudioFlinger 通过
IStreamOut.aidl
和IStreamIn.aidl
将音频发送到 HAL 和从 HAL 接收音频时使用流。 ITelephony.aidl
提供了特定于电话功能的控件。IBluetooth.aidl
提供了 BT SCO 和 HFP 控件,这些控件位于 HIDL API 中的IPrimaryModule
上。IConfig.aidl
提供了系统范围的配置参数。ISoundDose.aidl
提供了声音剂量支持。如需了解详情,请参阅声音剂量。- 正在开发中的最新版 Core HAL API 位于
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
中。 - 最新发布版 Core HAL API 位于
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
中。
Effects HAL
以下是使用 AIDL 的 Effects HAL 的一些主要接口
IFactory.aidl
是 API 的入口点。Descriptor.aidl
包含所有信息,例如效果实现的功能和属性。Capability.aidl
定义了在运行时不更改的效果功能。Parameter.aidl
定义了效果实例支持的所有参数。IEffect.aidl
用于配置和控制特定的效果实例。以效果命名的特定于效果的可 Parcelable 对象。
正在开发中的最新版 Effects HAL API 位于
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
中。最新发布版 Effects HAL API 位于
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
中。
如需了解详情,请参阅音频效果。
Common HAL
BT HAL、Core 和 Effects Audio HAL 等各种 HAL 之间共享的数据结构和接口位于 Common HAL 中。
正在开发中的最新版 Common AIDL HAL 位于
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
中。最新发布版 Common HAL API 位于
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
中。
通用稳定数据类型
HAL 和框架都使用稳定的数据结构定义。
正在开发中的最新版稳定数据类型位于
/system/hardware/interfaces/media/aidl/android/media/audio/common/
中。最新发布版稳定数据类型位于
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
中。
测试音频 AIDL HAL API
新的 VTS 测试是为 AIDL 接口提供的。
新版 HAL 中没有任何更改会影响安全性。