A partire da Android 14, l'interfaccia Audio HAL è definita utilizzando Stable AIDL. I partner e i fornitori di SoC sono invitati a implementare nuovamente il proprio HAL audio 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) riceve la
configurazione dall'HAL anziché utilizzarla dal file XML fornito dal fornitore.
API Audio AIDL HAL
Questa sezione descrive le API HAL Core, Effects e Common per AIDL.
Utilizza l'implementazione predefinita dell'API AIDL in
/hardware/interfaces/audio/aidl/default/
come riferimento quando implementi nuove versioni di HAL audio che interagiscono con i driver del kernel.
Consulta il file README di Audio HAL per la struttura della directory Audio HAL per AIDL.
HAL di base
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 supporto per la dose sonora. Per saperne di più, consulta Dose sonora.- L'ultima versione dell'API Core HAL in fase di sviluppo è 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/.
HAL degli effetti
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 l'implementazione di un effetto.Capability.aidldefinisce le funzionalità degli effetti che non cambiano in fase di runtime.Parameter.aidldefinisce tutti i parametri supportati dall'istanza dell'effetto.IEffect.aidlviene utilizzato per configurare e controllare istanze di effetti particolari.Parcelable specifici dell'effetto denominati in base all'effetto.
L'ultima versione dell'API Effects HAL in fase di sviluppo è 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 la sezione Effetti audio.
Common HAL
Le strutture di dati e le interfacce condivise tra vari HAL, come BT HAL, HAL audio di base e degli effetti, si trovano in Common HAL.
L'ultima versione dell'HAL AIDL comune 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 di struttura dei dati stabili vengono utilizzate sia dagli HAL che dal framework.
L'ultima versione dei tipi di dati stabili in fase di sviluppo è 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/.
Test dell'API HAL AIDL audio
Per l'interfaccia AIDL vengono forniti nuovi test VTS.
Non sono presenti modifiche nella nuova versione HAL che possano influire sulla sicurezza.