自 Android 14 起,Audio HAL 介面會使用 穩定版 AIDL 進行定義。我們建議合作夥伴和 SoC 供應商重新實作 Audio HAL,以提供 AIDL 介面。
擴充 libaudiohal
程式庫可為 AIDL HAL 新增架構支援。在 AIDL 實作中,音訊政策設定規格會移至 AIDL HAL。在這個變更之後,Audio Policy Manager (APM) 會從 HAL 取得設定,而非從供應商提供的 XML 檔案使用設定。
音訊 AIDL HAL API
本節將說明 AIDL 的 Core、Effects 和 Common HAL API。
在實作與核心驅動程式互動的音訊 HAL 新版本時,請使用 /hardware/interfaces/audio/aidl/default/
中的 AIDL API 預設實作項目做為參考。
如要瞭解 AIDL 的 Audio HAL 目錄結構,請參閱 Audio HAL README 檔案。
核心 HAL
使用 AIDL 的部分 核心 HAL 主要介面如下:
IModule.aidl
是 API 的進入點。- 串流屬於單向性質,AudioFlinger 會透過
IStreamOut.aidl
和IStreamIn.aidl
,在 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/
中。
特效 HAL
使用 AIDL 的效果 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/
中。
測試 Audio AIDL HAL API
為 AIDL 介面提供新的 VTS 測試。
新版 HAL 版本中沒有任何可能影響安全性的變更。