A partire da Android 14, l'interfaccia HAL audio viene definita utilizzando Stable AIDL. I partner e i fornitori di SoC sono invitati a reimplementare l'HAL Audio per fornire un'interfaccia AIDL.
L'estensione della libreria libaudiohal
aggiunge il supporto del framework per l'HAL AIDL.
Con l'implementazione AIDL, la specifica di configurazione dei criteri audio viene trasferita all'HAL AIDL. Con questa modifica, Audio Policy Manager (APM) ottiene la configurazione dall'HAL anziché dal file XML fornito dal fornitore.
API HAL Audio AIDL
Questa sezione descrive le API HAL di base, per gli effetti e comuni 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 principale
Di seguito sono riportate alcune interfacce chiave di Core HAL, che utilizzano AIDL:
IModule.aidl
è il punto di contatto 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 erano disponibili inIPrimaryModule
nell'API HIDL.IConfig.aidl
fornisce parametri di configurazione a livello di sistema.ISoundDose.aidl
fornisce assistenza per la dose sonora. Per ulteriori informazioni, consulta la sezione Dose sonora.- L'ultima versione dell'API HAL di base in fase di sviluppo è in
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - L'ultima versione rilasciata dell'API Core HAL è disponibile in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
HAL per gli effetti
Ecco alcune delle interfacce chiave di Effects HAL, che utilizza AIDL:
IFactory.aidl
è il punto di contatto dell'API.Descriptor.aidl
contiene tutte le informazioni, ad esempio 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 determinate istanze di effetti.Parcellable specifici per l'effetto, denominati in base all'effetto.
L'ultima versione dell'API HAL Effects in fase di sviluppo è in
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.L'ultima versione rilasciata dell'API HAL Effects è in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Per ulteriori informazioni, consulta la sezione Effetti audio.
HAL comune
Le strutture di dati e le interfacce condivise tra vari HAL, come HAL BT, HAL audio di base e di effetti, si trovano nell'HAL comune.
La versione più recente dell'HAL AIDL comune in fase di sviluppo è in
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.L'ultima versione rilasciata dell'API HAL comune è in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipi di dati stabili comuni
Le definizioni di strutture di dati stabili vengono utilizzate sia dagli HAL che dal framework.
La versione più recente dei tipi di dati stabili in fase di sviluppo è in
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.La versione rilasciata più recente dei tipi di dati stabili è in
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Test dell'API HAL Audio AIDL
Sono disponibili nuovi test VTS per l'interfaccia AIDL.
La nuova versione HAL non presenta modifiche che possono influire sulla sicurezza.