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.aidlto 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.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.aidlzawiera 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 efektów, 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 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.