Od Androida 14 interfejs HAL audio jest definiowany za pomocą stabilnego AIDL. Zachęcamy partnerów i dostawców układów SoC do ponownego wdrożenia warstwy HAL audio, aby zapewnić interfejs AIDL.
Rozszerzenie biblioteki libaudiohal
dodaje obsługę AIDL HAL.
W przypadku implementacji AIDL specyfikacja konfiguracji zasad audio jest przenoszona do AIDL HAL. Dzięki tej zmianie Menedżer zasad audio (APM) pobiera konfigurację z warstwy HAL zamiast z pliku XML dostarczonego przez dostawcę.
Audio AIDL HAL API
W tej sekcji opisujemy interfejsy API HAL Core, Effects i Common dla AIDL.
Podczas wdrażania nowych wersji interfejsów HAL audio, które współdziałają ze sterownikami jądra, korzystaj z domyślnej implementacji interfejsu API AIDL w /hardware/interfaces/audio/aidl/default/
jako materiału referencyjnego.
Strukturę katalogu HAL audio dla AIDL znajdziesz w pliku README HAL audio.
Podstawowa warstwa HAL
Oto niektóre z głównych interfejsów HAL podstawowego, które korzystają z AIDL:
IModule.aidl
to punkt wejściowy interfejsu API.- Strumienie są jednokierunkowe i służą do wysyłania lub odbierania dźwięku przez AudioFlinger do i z HAL-u za pomocą
IStreamOut.aidl
iIStreamIn.aidl
. ITelephony.aidl
udostępnia ustawienia dotyczące funkcji telefonicznych.IBluetooth.aidl
udostępnia elementy sterujące BT SCO i HFP, które były dostępne wIPrimaryModule
w interfejsie HIDL API.IConfig.aidl
zawiera parametry konfiguracji na poziomie systemu.ISoundDose.aidl
zapewnia obsługę dawki dźwięku. Więcej informacji znajdziesz w sekcji Dawka dźwięku.- Najnowsza wersja interfejsu Core HAL API w trakcie opracowywania jest w
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Najnowsza opublikowana wersja interfejsu Core HAL API znajduje się w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Warstwa HAL efektów
Oto niektóre z najważniejszych interfejsów HAL efektów korzystających z AIDL:
IFactory.aidl
to punkt wejściowy interfejsu API.Descriptor.aidl
zawiera wszystkie informacje, takie jak możliwości i atrybuty implementacji efektu.Capability.aidl
określa możliwości efektów, które nie zmieniają się w czasie działania.Parameter.aidl
określa wszystkie parametry obsługiwane przez instancję efektu.IEffect.aidl
służy do konfigurowania i sterowania konkretnymi instancjami efektów.Obiekty Parcelable specyficzne dla efektu, nazwane na jego cześć.
Najnowsza wersja interfejsu API HAL efektów w trakcie opracowywania jest w
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Najnowsza opublikowana wersja interfejsu Effects HAL API znajduje się w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Więcej informacji znajdziesz w sekcji Efekty audio.
Common HAL
Struktury danych i interfejsy wspólne dla różnych warstw HAL, takich jak warstwa HAL Bluetooth, podstawowe warstwy HAL audio i warstwy HAL audio efektów, znajdują się w warstwie HAL Common.
Najnowsza wersja Common AIDL HAL w trakcie opracowywania znajduje się w
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Najnowsza opublikowana wersja interfejsu Common HAL API jest dostępna w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Typowe stabilne typy danych
Stabilne definicje struktury danych są używane zarówno przez HAL, jak i framework.
Najnowsza wersja stabilnych typów danych w trakcie opracowywania znajduje się w
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Najnowsza opublikowana wersja stabilnych typów danych jest w
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Testowanie interfejsu Audio AIDL HAL API
Nowe testy VTS są dostępne dla interfejsu AIDL.
W nowej wersji HAL nie ma zmian, które mogłyby wpłynąć na bezpieczeństwo.