W Androidzie 14 i nowszych interfejs Audio HAL jest zdefiniowany za pomocą stabilnego AIDL. Zachęcamy partnerów i dostawców układów SoC do ponownego wdrożenia interfejsu 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 HAL, zamiast korzystać 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 Audio HAL dla AIDL znajdziesz w pliku README Audio HAL.
Podstawowa warstwa HAL
Oto niektóre z głównych interfejsów HAL podstawowego, które korzystają z AIDL:
IModule.aidlto punkt wejściowy interfejsu API.- Strumienie są jednokierunkowe i służą do wysyłania i odbierania dźwięku przez AudioFlingera do i z HAL-a za pomocą
IStreamOut.aidliIStreamIn.aidl. ITelephony.aidludostępnia ustawienia dotyczące funkcji telefonicznych.IBluetooth.aidludostępnia elementy sterujące BT SCO i HFP, które były dostępne wIPrimaryModulew interfejsie HIDL API.IConfig.aidludostępnia parametry konfiguracji na poziomie systemu.ISoundDose.aidlzapewnia 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.aidlto punkt wejściowy interfejsu API.Descriptor.aidlzawiera wszystkie informacje, takie jak możliwości i atrybuty implementacji efektu.Capability.aidlokreśla możliwości efektu, które nie zmieniają się w czasie działania.Parameter.aidlokreśla wszystkie parametry obsługiwane przez instancję efektu.IEffect.aidlsłuży do konfigurowania i kontrolowania konkretnych instancji efektów.Obiekty Parcelable specyficzne dla efektu, nazwane zgodnie z efektem.
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.
Wspólna warstwa HAL
Struktury danych i interfejsy udostępniane przez różne warstwy HAL, takie jak BT HAL, podstawowe warstwy HAL audio i warstwy HAL efektów audio, znajdują się w warstwie Common HAL.
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 warstwy HAL, jak i platformę.
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 żadnych zmian, które mogłyby wpłynąć na bezpieczeństwo.