
L'Hardware Abstraction Layer (HAL) audio di Android collega le API framework audio specifiche di livello superiore in android.media al driver audio e all'hardware sottostanti. Questa sezione include istruzioni e suggerimenti per l'implementazione per migliorare le prestazioni.
L'architettura audio di Android definisce come viene implementata la funzionalità audio e indica il codice sorgente pertinente coinvolto nell'implementazione.

Figura 1. Architettura audio Android
- Framework applicativo
- Il framework dell'applicazione include il codice dell'app, che utilizza le API android.media per interagire con l'hardware audio. Internamente, questo codice chiama le classi JNI glue corrispondenti per accedere al codice nativo che interagisce con l'hardware audio.
- JNI
-
Il codice JNI associato alle chiamate android.media richiama codice nativo di livello inferiore per accedere all'hardware audio. JNI si trova in
frameworks/base/core/jni/
eframeworks/base/media/jni
. - Framework nativo
-
Il framework nativo fornisce un equivalente nativo del pacchetto android.media, chiamando
i proxy IPC Binder per accedere ai servizi specifici per l'audio del server multimediale.
Il codice del framework nativo si trova in
frameworks/av/media/libmedia
. - Binder IPC
-
I proxy IPC Binder facilitano la comunicazione oltre i limiti dei processi. I proxy si trovano in
frameworks/av/media/libmedia
e iniziano con la lettera "I". - Server multimediale
-
Il server multimediale contiene servizi audio, ovvero il codice effettivo che
interagisce con le implementazioni HAL. Il server multimediale si trova in
frameworks/av/services/audioflinger
. - HAL
-
L'HAL definisce l'interfaccia standard che i servizi audio chiamano e che
devi implementare affinché l'hardware audio funzioni correttamente. Per ulteriori dettagli, consulta l'interfaccia
HAL audio e i commenti nei file
*.hal
della directory della versione HAL corrispondente. - Driver del kernel
-
Il driver audio interagisce con l'hardware e l'implementazione HAL. Puoi
utilizzare Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) o un
driver personalizzato (HAL è indipendente dal driver).
Nota: se utilizzi ALSA, ti consigliamo
external/tinyalsa
per la parte utente del driver a causa della sua licenza compatibile (la libreria standard in modalità utente è concessa in licenza GPL). - Audio nativo di Android basato su Open SL ES (non mostrato)
- Questa API è esposta come parte di Android NDK e si trova allo stesso livello di architettura di android.media.