Warstwa abstrakcji sprzętu (HAL) dźwięku w Androidzie łączy interfejsy API wyższego poziomu, które są specyficzne dla dźwięku i znajdują się w pakiecie android.media, z bazowym sterownikiem dźwięku i sprzętem. Ta sekcja zawiera instrukcje wdrażania i wskazówki dotyczące zwiększania skuteczności.
Architektura dźwięku w Androidzie określa sposób implementacji funkcji audio i wskazuje odpowiedni kod źródłowy związany z tą implementacją.
Rysunek 1. Architektura dźwięku w Androidzie
- Platforma aplikacji
 - Platforma aplikacji zawiera kod aplikacji, który korzysta z interfejsów API android.media do interakcji ze sprzętem audio. Wewnętrznie ten kod wywołuje odpowiednie klasy JNI, aby uzyskać dostęp do kodu natywnego, który wchodzi w interakcję ze sprzętem audio.
 - JNI
 - 
Kod JNI powiązany z pakietem android.media wywołuje kod natywny niższego poziomu, aby uzyskać dostęp do sprzętu audio. JNI znajduje się w 
frameworks/base/core/jni/iframeworks/base/media/jni. - Platforma natywna
 - 
Platforma natywna udostępnia natywny odpowiednik pakietu android.media, wywołując proxy IPC Binder, aby uzyskać dostęp do usług serwera multimediów związanych z dźwiękiem.
Kod platformy natywnej znajduje się w folderze 
frameworks/av/media/libmedia. - Binder IPC
 - 
Pełnomocnicy IPC Binder ułatwiają komunikację między procesami. Serwery proxy znajdują się w 
frameworks/av/media/libmediai zaczynają się od litery „I”. - Serwer mediów
 - 
Serwer multimediów zawiera usługi audio, czyli rzeczywisty kod, który
wchodzi w interakcję z implementacjami HAL. Serwer multimediów znajduje się w lokalizacji 
frameworks/av/services/audioflinger. - HAL
 - 
HAL definiuje standardowy interfejs, z którego korzystają usługi audio i który musisz wdrożyć, aby sprzęt audio działał prawidłowo. Więcej informacji znajdziesz w interfejsie HAL audio i komentarzach w plikach 
*.halw odpowiednim katalogu wersji HAL. - Sterownik jądra
 - Sterownik audio wchodzi w interakcje ze sprzętem i implementacją HAL. Możesz używać zaawansowanej architektury dźwięku w systemie Linux (ALSA), otwartego systemu dźwięku (OSS) lub niestandardowego sterownika (HAL jest niezależny od sterownika).
Uwaga: jeśli używasz ALSA, zalecamy
external/tinyalsaw przypadku części sterownika dotyczącej użytkownika ze względu na zgodne licencjonowanie (standardowa biblioteka trybu użytkownika jest licencjonowana na podstawie licencji GPL). - Natywny dźwięk na Androidzie oparty na Open SL ES (nie jest wyświetlany)
 - Ten interfejs API jest udostępniany w ramach Android NDK i znajduje się na tym samym poziomie architektury co android.media.