In Android 14 e versioni successive, l'interfaccia Audio HAL è definita utilizzando Stable AIDL. I partner e i fornitori di SoC sono invitati a reimplementare il proprio Audio HAL per fornire un'interfaccia AIDL.
L'estensione della libreria libaudiohal aggiunge il supporto del framework per AIDL HAL.
Con l'implementazione di AIDL, la specifica di configurazione della policy audio viene spostata in AIDL HAL. Con questa modifica, Audio Policy Manager (APM) ottiene la configurazione dall'HAL anziché utilizzarla dal file XML fornito dal fornitore.
API Audio AIDL HAL
Questa sezione descrive le API Core, Effects e Common HAL per AIDL.
Utilizza l'implementazione predefinita dell'API AIDL at
/hardware/interfaces/audio/aidl/default/
come riferimento quando implementi nuove versioni di Audio HAL che
interagiscono con i driver del kernel.
Consulta il file README di Audio HAL per la struttura della directory di Audio HAL per AIDL.
Core HAL
Di seguito sono riportate alcune delle interfacce chiave di Core HAL, che utilizzano AIDL:
IModule.aidlè il punto di ingresso dell'API.- Gli stream sono unidirezionali e vengono utilizzati da AudioFlinger per inviare o ricevere
audio da e verso l'HAL tramite
IStreamOut.aidleIStreamIn.aidl. ITelephony.aidlfornisce controlli specifici per le funzioni di telefonia.IBluetooth.aidlfornisce i controlli BT SCO e HFP che si trovavano inIPrimaryModulenell'API HIDL.IConfig.aidlfornisce parametri di configurazione a livello di sistema.ISoundDose.aidlfornisce il supporto per la dose sonora. Per ulteriori informazioni, consulta Dose sonora.- L'ultima versione dell'API Core HAL in fase di sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - L'ultima versione rilasciata dell'API Core HAL si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
Effects HAL
Di seguito sono riportate alcune delle interfacce chiave di Effects HAL, che utilizzano AIDL:
IFactory.aidlè il punto di ingresso dell'API.Descriptor.aidlcontiene tutte le informazioni, come funzionalità e attributi, per un'implementazione dell'effetto.Capability.aidldefinisce le funzionalità dell'effetto che non cambiano in fase di runtime.Parameter.aidldefinisce tutti i parametri supportati dall'istanza dell'effetto.IEffect.aidlviene utilizzato per configurare e controllare particolari istanze dell'effetto.Parcelable specifici dell'effetto denominati in base all'effetto.
L'ultima versione dell'API Effects HAL in fase di sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.L'ultima versione rilasciata dell'API Effects HAL si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Per ulteriori informazioni, consulta Effetti audio.
Common HAL
Le strutture di dati e le interfacce condivise tra vari HAL, come BT HAL, Core e Effects Audio HAL, si trovano in Common HAL.
L'ultima versione di Common AIDL HAL in fase di sviluppo si trova in
/hardware/interfaces/audio/aidl/android/hardware/audio/common/.L'ultima versione rilasciata dell'API Common HAL si trova in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/.
Tipi di dati stabili comuni
Le definizioni delle strutture di dati stabili vengono utilizzate sia dagli HAL sia dal framework.
L'ultima versione dei tipi di dati stabili in fase di sviluppo si trova in
/system/hardware/interfaces/media/aidl/android/media/audio/common/.L'ultima versione rilasciata dei tipi di dati stabili si trova in
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/.
Testare l'API Audio AIDL HAL
Sono forniti nuovi VTS test per l'interfaccia AIDL.
Nella nuova versione HAL non sono presenti modifiche che possano influire sulla sicurezza.