Dźwięk

Ikona Android Audio HAL

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

Architektura audio

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/frameworks/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/libmedia i 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 *.hal w 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, zalecamyexternal/tinyalsa w 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.