Audio

Ikona Android Audio HAL

Warstwa abstrakcji sprzętu audio w systemie Android (HAL) łączy interfejsy API wyższego poziomu specyficzne dla dźwięku w android.media z podstawowym sterownikiem audio i sprzętem. Ta sekcja zawiera instrukcje dotyczące implementacji i wskazówki dotyczące poprawy wydajności.

Architektura audio systemu Android definiuje sposób implementacji funkcji audio i wskazuje odpowiedni kod źródłowy zaangażowany w implementację.

Architektura dźwięku

Rysunek 1. Architektura audio systemu Android

Ramy aplikacji
Struktura aplikacji obejmuje kod aplikacji, który wykorzystuje interfejsy API android.media do interakcji ze sprzętem audio. Wewnętrznie ten kod wywołuje odpowiednie klasy kleju JNI, aby uzyskać dostęp do kodu natywnego, który współdziała ze sprzętem audio.
JNI
Kod JNI powiązany z android.media wywołuje natywny kod niższego poziomu, aby uzyskać dostęp do sprzętu audio. JNI znajduje się w frameworks/base/core/jni/ and frameworks/base/media/jni .
Natywny framework
Struktura natywna zapewnia natywny odpowiednik pakietu android.media , wywołując serwery proxy Binder IPC w celu uzyskania dostępu do usług audio serwera multimediów. Natywny kod frameworka znajduje się w frameworks/av/media/libmedia .
Binder IPC
Serwery proxy Binder IPC ułatwiają komunikację ponad granicami procesu. Serwery proxy znajdują się w frameworks/av/media/libmedia i zaczynają się na literę „I”.
Serwer mediów
Serwer multimediów zawiera usługi audio, które są rzeczywistym kodem, który współdziała z implementacjami HAL. Serwer multimediów znajduje się w frameworks/av/services/audioflinger .
HAL
HAL definiuje standardowy interfejs, do którego odwołują się usługi audio i który należy zaimplementować, aby sprzęt audio działał poprawnie. Aby uzyskać więcej informacji, zapoznaj się z interfejsem audio HAL i komentarzami w plikach *.hal odpowiedniego katalogu wersji HAL.
Sterownik jądra
Sterownik audio współdziała ze sprzętem i implementacją warstwy HAL. Możesz użyć Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) lub niestandardowego sterownika (HAL jest niezależny od sterownika).

Uwaga : jeśli używasz ALSA, zalecamy external/tinyalsa dla części użytkownika sterownika ze względu na jego kompatybilną licencję (standardowa biblioteka trybu użytkownika jest na licencji GPL).

Natywny dźwięk systemu Android oparty na Open SL ES (nie pokazano)
Ten interfejs API jest udostępniany jako część Android NDK i jest na tym samym poziomie architektury co android.media .