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.aidl
eIStreamIn.aidl
. ITelephony.aidl
fornisce controlli specifici per le funzioni di telefonia.IBluetooth.aidl
fornisce i controlli BT SCO e HFP che si trovavano inIPrimaryModule
nell'API HIDL.IConfig.aidl
fornisce parametri di configurazione a livello di sistema.ISoundDose.aidl
fornisce 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.aidl
contiene tutte le informazioni, come funzionalità e attributi per l'implementazione di un effetto.Capability.aidl
definisce le funzionalità degli effetti che non cambiano in fase di runtime.Parameter.aidl
definisce tutti i parametri supportati dall'istanza dell'effetto.IEffect.aidl
viene 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.