從 Android 14 開始,音訊 HAL 介面會使用 Stable AIDL 定義。建議合作夥伴和 SoC 供應商重新實作 Audio HAL,以提供 AIDL 介面。
擴充 libaudiohal
程式庫可為 AIDL HAL 新增架構支援。採用 AIDL 實作方式後,音訊政策設定規格會移至 AIDL HAL。這項變更後,音訊政策管理員 (APM) 會從 HAL 取得設定,而非取用供應商提供的 XML 檔案。
Audio AIDL HAL API
本節說明 AIDL 的 Core、Effects 和 Common HAL API。
實作與核心驅動程式互動的音訊 HAL 新版本時,請參考 /hardware/interfaces/audio/aidl/default/
的 AIDL API 預設實作。
如需 AIDL 的 Audio HAL 目錄結構,請參閱 Audio HAL README 檔案。
核心 HAL
以下列出一些 Core HAL 的主要介面 (使用 AIDL):
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 的 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
。
詳情請參閱「音效」。
通用 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/
。
測試 Audio AIDL HAL API
針對 AIDL 介面提供新的 VTS 測試。
新版 HAL 沒有任何可能影響安全性的變更。