從 Android 14 開始,音訊 HAL 介面為 Stable AIDL 定義。夥伴合作 我們建議 SoC 供應商重新導入音訊 HAL,以提供 AIDL 介面。
擴充 libaudiohal
程式庫後,新增 AIDL HAL 的架構支援。
導入 AIDL 後,音訊政策設定規格為
已移至 AIDL HAL本次異動後,音訊政策管理工具 (APM) 將取得
HAL 的設定,而不要從供應商提供的 XML 取用
檔案。
音訊 AIDL HAL API
本節說明 AIDL 適用的核心、效果和通用 HAL API。
在以下位置使用 AIDL API 的預設實作方式
/hardware/interfaces/audio/aidl/default/
做為參考依據
都能與核心驅動程式互動
詳情請參閱 音訊 HAL README 檔案 如果是 AIDL 的音訊 HAL 目錄結構
核心 HAL
核心 HAL 的主要介面 如下所示:
IModule.aidl
是 API 的進入點。- 串流為單向性質,AudioFlinger 會使用串流來傳送或接收
音訊傳入及傳出 HAL 至
IStreamOut.aidl
和IStreamIn.aidl
。 ITelephony.aidl
提供電話功能專用的控制項。IBluetooth.aidl
提供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/
。
效果 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 都是常見的 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 版本沒有任何會影響安全性的變更。