Począwszy od Androida 14, interfejs Audio HAL jest definiowany przy użyciu stabilnego AIDL . Zachęcamy partnerów i dostawców SoC do ponownego wdrożenia warstwy Audio HAL w celu zapewnienia interfejsu AIDL.
Rozszerzenie biblioteki libaudiohal
dodaje obsługę frameworka dla AIDL HAL. Wraz z implementacją AIDL specyfikacja konfiguracji zasad audio została przeniesiona do AIDL HAL. Dzięki tej zmianie Menedżer zasad audio (APM) pobiera konfigurację z warstwy HAL, zamiast wykorzystywać ją z pliku XML dostarczonego przez dostawcę.
API audio AIDL HAL
W tej sekcji opisano rdzeń, efekty i wspólne interfejsy API HAL dla AIDL.
Użyj domyślnej implementacji API AIDL w /hardware/interfaces/audio/aidl/default/
jako odniesienia podczas wdrażania nowych wersji warstw Audio HAL, które współdziałają ze sterownikami jądra.
Zobacz plik Audio HAL README , aby zapoznać się ze strukturą katalogów Audio HAL dla AIDL.
Rdzeń HAL
Niektóre z kluczowych interfejsów Core HAL wykorzystujących AIDL są następujące:
-
IModule.aidl
jest punktem wejścia do API. - Strumienie są jednokierunkowe i są używane przez AudioFlinger do wysyłania lub odbierania dźwięku do i z warstwy HAL poprzez
IStreamOut.aidl
iIStreamIn.aidl
. -
ITelephony.aidl
zapewnia kontrolę specyficznych funkcji telefonii. -
IBluetooth.aidl
zapewnia kontrolki BT SCO i HFP, które znajdowały się wIPrimaryModule
w interfejsie API HIDL. -
IConfig.aidl
udostępnia parametry konfiguracyjne dla całego systemu. -
ISoundDose.aidl
zapewnia obsługę dawki dźwięku. Aby uzyskać więcej informacji, zobacz Dawka dźwięku . - Najnowsza wersja API Core HAL w fazie rozwoju znajduje się w
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Najnowsza wydana wersja interfejsu API Core HAL znajduje się w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Efekty HAL
Niektóre z kluczowych interfejsów Effects HAL, korzystających z AIDL, są następujące:
-
IFactory.aidl
jest punktem wejścia do API. -
Descriptor.aidl
zawiera wszystkie informacje, takie jak możliwości i atrybuty dotyczące implementacji efektu. -
Capability.aidl
definiuje możliwości efektów, 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 kontrolowania poszczególnych instancji efektów. Paczki specyficzne dla efektu, nazwane na cześć efektu.
Najnowsza wersja API Effects HAL w fazie rozwoju znajduje się w
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Najnowsza wydana wersja interfejsu API Effects HAL znajduje się w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Aby uzyskać więcej informacji, zobacz Efekty dźwiękowe .
Wspólny HAL
Struktury danych i interfejsy współdzielone pomiędzy różnymi warstwami HAL, takimi jak BT HAL, warstwy HAL z rdzeniem i efektami audio znajdują się we wspólnej warstwie HAL.
Najnowsza wersja Common AIDL HAL znajduje się w katalogu
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Najnowsza wydana wersja interfejsu API Common HAL znajduje się w
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Typowe stabilne typy danych
Definicje stabilnych struktur danych są używane zarówno przez warstwy HAL, jak i framework.
Najnowsza wersja stabilnych typów danych w fazie rozwoju znajduje się w
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Najnowsza wydana wersja stabilnych typów danych znajduje się w
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Testowanie API Audio AIDL HAL
Dodano nowe testy VTS dla interfejsu AIDL.
W nowej wersji HAL nie ma żadnych zmian, które mogłyby mieć wpływ na bezpieczeństwo.