
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ę.

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/
iframeworks/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 .