Audio

Icona HAL audio Android

L'HAL (Hardware Abstraction Layer) audio di Android collega le API del framework audio specifico di livello superiore in android.media al driver audio e all'hardware sottostanti. Questa sezione include istruzioni di implementazione e suggerimenti per migliorare le prestazioni.

L'architettura audio Android definisce come viene implementata la funzionalità audio e punta al codice sorgente pertinente coinvolto nell'implementazione.

Architettura dell'audio

Figura 1. Architettura audio Android

Quadro 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 di colla JNI corrispondenti per accedere al codice nativo che interagisce con l'hardware audio.
JNI
Il codice JNI associato ad android.media richiama il codice nativo di livello inferiore per accedere all'hardware audio. JNI si trova in frameworks/base/core/jni/ e frameworks/base/media/jni .
Quadro nativo
Il framework nativo fornisce un equivalente nativo del pacchetto android.media , chiamando i proxy IPC Binder per accedere ai servizi specifici dell'audio del server multimediale. Il codice del framework nativo si trova in frameworks/av/media/libmedia .
Legante IPC
I proxy IPC di Binder facilitano la comunicazione oltre i confini del processo. 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 a cui chiamano i servizi audio e che è necessario implementare affinché l'hardware audio funzioni correttamente. Per maggiori dettagli, fare riferimento all'interfaccia audio dell'HAL e ai commenti nei file *.hal della directory della versione HAL corrispondente.
Driver del kernel
Il driver audio interagisce con l'hardware e l'implementazione HAL. È possibile utilizzare Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) o un driver personalizzato (HAL è indipendente dal driver).

Nota : se usi ALSA, ti consigliamo external/tinyalsa per la parte utente del driver a causa della sua licenza compatibile (la libreria in modalità utente standard ha la licenza GPL).

Audio nativo Android basato su Open SL ES (non mostrato)
Questa API è esposta come parte di Android NDK e ha lo stesso livello di architettura di android.media .