從 Android 14 開始,音訊 HAL 介面是使用Stable AIDL定義的。我們鼓勵合作夥伴和 SoC 供應商重新實現其音訊 HAL 以提供 AIDL 介面。
擴充libaudiohal
函式庫新增了對 AIDL HAL 的框架支援。透過 AIDL 實現,音訊策略配置規範已移至 AIDL HAL。透過此更改,音訊策略管理器 (APM) 從 HAL 取得配置,而不是從供應商提供的 XML 檔案中使用配置。
音訊 AIDL HAL API
本節介紹 AIDL 的核心、效果和通用 HAL API。
在實作與核心驅動程式互動的新版本音訊 HAL 時,請使用/hardware/interfaces/audio/aidl/default/
中 AIDL API 的預設實作作為參考。
有關 AIDL 的音訊 HAL 目錄結構,請參閱音訊 HAL README 檔案。
核心HAL
-
IModule.aidl
是 API 的入口點。 - 串流是單向的,AudioFlinger 使用它透過
IStreamOut.aidl
和IStreamIn.aidl
向 HAL 發送音訊或從 HAL 接收音訊。 -
ITelephony.aidl
提供特定於電話功能的控制。 -
IBluetooth.aidl
提供 HIDL API 中IPrimaryModule
上的 BT SCO 和 HFP 控制。 -
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的一些關鍵介面如下:
-
IFactory.aidl
是 API 的入口點。 -
Descriptor.aidl
包含效果實現的所有訊息,例如功能和屬性。 -
Capability.aidl
定義在執行時不會變更的效果功能。 -
Parameter.aidl
定義了效果實例支援的所有參數。 -
IEffect.aidl
用於配置和控制特定效果實例。 以效果命名的特定於效果的可分割物件。
正在開發的Effects HAL API 的最新版本位於
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
。Effects HAL API 的最新發布版本位於
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
。
有關詳細信息,請參閱音頻效果。
通用HAL
各種 HAL 之間共享的資料結構和介面(例如 BT 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
為 AIDL 介面提供了新的VTS測試。
新 HAL 版本中沒有任何可能影響安全性的變更。