Audio

Ikona HAL systemu Android Audio

Warstwa abstrakcji sprzętu audio systemu Android (HAL) łączy interfejsy API wyższego poziomu, specyficzne dla systemu audio 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 audio

Rysunek 1. Architektura audio Androida

Ramy aplikacji
Struktura aplikacji zawiera 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 kod natywny niższego poziomu w celu uzyskania dostępu do sprzętu audio. JNI znajduje się w frameworks/base/core/jni/ i frameworks/base/media/jni .
Natywna platforma
Natywna platforma zapewnia natywny odpowiednik pakietu android.media , wywołując serwery proxy Binder IPC w celu uzyskania dostępu do usług specyficznych dla dźwięku serwera multimediów. Natywny kod frameworka znajduje się w frameworks/av/media/libmedia .
segregator IPC
Serwery proxy Binder IPC ułatwiają komunikację ponad granicami procesu. Serwery proxy znajdują się w frameworks/av/media/libmedia i zaczynają się od litery „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 medió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 sterowników).

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

Natywny dźwięk w systemie 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 .