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ę platformy dla 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, używaj domyślnej implementacji interfejsu AIDL API w /hardware/interfaces/audio/aidl/default/ jako punktu odniesienia.
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 AudioFlinger do i z HAL 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/.
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.aidldefiniuje wszystkie parametry obsługiwane przez instancję efektu.IEffect.aidlsłuży do konfigurowania i kontrolowania konkretnych instancji efektów.Obiekty Parcelable specyficzne dla efektu, których nazwy pochodzą od nazwy efektu.
Najnowsza wersja interfejsu Effects HAL API w trakcie opracowywania znajduje się 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 warstwa HAL Bluetooth, podstawowe warstwy HAL audio i warstwy HAL audio efektów, 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 znajduje się 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 zmian, które mogłyby wpłynąć na bezpieczeństwo.