Audio

Ikona Android Audio HAL

Warstwa abstrakcji sprzętu audio (HAL) systemu Android łączy interfejsy API wyższego poziomu specyficzne dla dźwięku w witrynie 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 Androida definiuje sposób implementacji funkcjonalności audio i wskazuje odpowiedni kod źródłowy zaangażowany w implementację.

Architektura dźwięku

Rysunek 1. Architektura audio Androida

Ramy aplikacji
Struktura aplikacji zawiera kod aplikacji, który wykorzystuje interfejsy API systemu 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 .
Natywny framework
Natywna struktura zapewnia natywny odpowiednik pakietu android.media , wywołujący serwery proxy Binder IPC w celu uzyskania dostępu do usług specyficznych dla dźwięku na serwerze multimediów. Natywny kod frameworka znajduje się w frameworks/av/media/libmedia .
Spoiwo IPC
Serwery proxy Binder IPC ułatwiają komunikację ponad granicami procesów. 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 współdziałającym z implementacjami HAL. Serwer multimediów znajduje się w frameworks/av/services/audioflinger .
HAL
HAL definiuje standardowy interfejs, z którego korzystają usługi audio i który należy zaimplementować, aby sprzęt audio działał poprawnie. Więcej szczegółów można znaleźć w interfejsie audio HAL i komentarzach w plikach *.hal odpowiedniego katalogu wersji HAL.
Sterownik jądra
Sterownik audio współdziała ze sprzętem i implementacją HAL. Można użyć zaawansowanej architektury dźwięku Linux (ALSA), otwartego systemu dźwiękowego (OSS) lub sterownika niestandardowego (HAL jest niezależny od sterownika).

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

Natywny dźwięk dla Androida oparty na Open SL ES (nie pokazano)
Ten interfejs API jest udostępniany jako część Android NDK i ma ten sam poziom architektury co android.media .