Począwszy od Androida 14 interfejs Audio HAL jest definiowany za pomocą stabilnego AIDL. Partnerów i producentów układów SoC zachęcamy do ponownego zaimplementowania interfejsu Audio HAL, aby udostępnić interfejs AIDL.
Rozszerzenie biblioteki libaudiohal
umożliwia obsługę interfejsu AIDL HAL.
W ramach implementacji AIDL specyfikacja konfiguracji zasad dotyczących dźwięku została przeniesiona do interfejsu HAL AIDL. Dzięki tej zmianie menedżer zasad dotyczących dźwięku (APM) pobiera konfigurację z HAL, zamiast korzystać z pliku XML dostarczonego przez dostawcę.
Interfejs API HAL dla Audio AIDL
Ta sekcja opisuje interfejsy API Core, Effects i Common HAL dla AIDL.
Podczas implementowania nowych wersji interfejsów Audio HAL, które współpracują z sterownikami jądra, użyj domyślnej implementacji interfejsu AIDL API w pliku /hardware/interfaces/audio/aidl/default/
.
Zapoznaj się z plikiem README dotyczącym Audio HAL, aby poznać strukturę katalogu Audio HAL w przypadku AIDL.
Core HAL
Oto niektóre z głównych interfejsów Core HAL, które korzystają z AIDL:
IModule.aidl
to punkt wejścia do interfejsu API.- Strumienie są jednokierunkowe i służą do wysyłania lub odbierania dźwięku do HAL i z niego za pomocą
IStreamOut.aidl
iIStreamIn.aidl
. ITelephony.aidl
zawiera ustawienia dotyczące funkcji telefonicznych.IBluetooth.aidl
udostępnia elementy sterujące BT SCO i HFP, które były dostępne w interfejsie HIDL API w wersjiIPrimaryModule
.IConfig.aidl
udostępnia parametry konfiguracji na poziomie całego systemu.ISoundDose.aidl
zapewnia obsługę dawek dźwięku. Więcej informacji znajdziesz w artykule Sound dose.- Najnowsza wersja interfejsu Core HAL w trakcie opracowywania to
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Najnowsza opublikowana wersja interfejsu Core HAL API to
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Efekty HAL
Oto niektóre z kluczowych interfejsów HAL efektów, które korzystają z AIDL:
IFactory.aidl
to punkt wejścia do interfejsu API.Descriptor.aidl
zawiera wszystkie informacje, takie jak możliwości i atrybuty implementacji efektu.Capability.aidl
definiuje możliwości efektu, które nie zmieniają się w czasie wykonywania.Parameter.aidl
definiuje wszystkie parametry obsługiwane przez instancję efektu.IEffect.aidl
służy do konfigurowania i sterowania konkretnymi instancjami efektów.Obiekty parcelable związane z efektem, nazwane według efektu.
Najnowsza wersja interfejsu Effects HAL API w trakcie opracowywania to
/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 dźwiękowe.
Wspólny HAL
Struktury danych i interfejsy wspólne dla różnych HAL-i, takie jak HAL Bluetooth, HAL podstawowy i HAL efektów dźwiękowych, znajdują się w ramach wspólnego interfejsu HAL.
Najnowsza wersja interfejsu Common AIDL HAL jest w trakcie opracowywania i znajduje się w
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Najnowsza opublikowana wersja interfejsu Common HAL API znajduje się w pliku
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Typy danych o stabilnej strukturze
Stabilne definicje struktury danych są używane zarówno przez HAL, jak i przez framework.
Najnowsza wersja stabilnych typów danych w wersji roboczej znajduje się w pliku
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Najnowsza opublikowana wersja stabilnych typów danych znajduje się w
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Testowanie interfejsu Audio AIDL HAL API
Dostępne są nowe testy VTS dotyczące interfejsu AIDL.
Nowa wersja HAL nie zawiera żadnych zmian, które mogłyby wpłynąć na bezpieczeństwo.