Начиная с Android 14, интерфейс Audio HAL определяется с помощью Stable AIDL . Партнерам и поставщикам SoC рекомендуется повторно реализовать свой Audio HAL для предоставления интерфейса AIDL.
Расширение библиотеки libaudiohal
добавляет поддержку фреймворка для AIDL HAL. С реализацией AIDL спецификация конфигурации политики звука перемещается в AIDL HAL. С этим изменением диспетчер политики звука (APM) получает конфигурацию из HAL вместо того, чтобы использовать ее из предоставленного поставщиком XML-файла.
Аудио AIDL HAL API
В этом разделе описываются основные API, эффекты и общие API HAL для AIDL.
Используйте реализацию API AIDL по умолчанию в /hardware/interfaces/audio/aidl/default/
в качестве справочного материала при реализации новых версий Audio HAL, взаимодействующих с драйверами ядра.
Структуру каталога Audio HAL для AIDL см. в файле Audio HAL README .
Ядро HAL
Некоторые из ключевых интерфейсов Core HAL , использующих AIDL, следующие:
-
IModule.aidl
— это точка входа в API. - Потоки являются однонаправленными и используются AudioFlinger для отправки или получения звука в HAL и из него через
IStreamOut.aidl
иIStreamIn.aidl
. -
ITelephony.aidl
предоставляет элементы управления, специфичные для функций телефонии. -
IBluetooth.aidl
предоставляет элементы управления BT SCO и HFP, которые находились вIPrimaryModule
в API HIDL. -
IConfig.aidl
предоставляет общесистемные параметры конфигурации. -
ISoundDose.aidl
обеспечивает поддержку звуковой дозы. См. Звуковая доза для получения дополнительной информации. - Последняя версия API Core HAL , находящаяся в разработке, находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Последняя выпущенная версия Core HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Эффекты HAL
Ниже приведены некоторые ключевые интерфейсы Effects HAL, использующие AIDL:
-
IFactory.aidl
— это точка входа в API. -
Descriptor.aidl
содержит всю информацию, такую как возможности и атрибуты для реализации эффекта. -
Capability.aidl
определяет возможности эффектов, которые не изменяются во время выполнения. -
Parameter.aidl
определяет все параметры, поддерживаемые экземпляром эффекта. -
IEffect.aidl
используется для настройки и управления отдельными экземплярами эффектов. Специфические для эффекта парцелляты, названные в честь эффекта.
Последняя версия API эффектов HAL , находящаяся в разработке, находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Последняя выпущенная версия API эффектов HAL находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Более подробную информацию смотрите в разделе Аудиоэффекты .
Общий HAL
Структуры данных и интерфейсы, общие для различных HAL, таких как BT HAL, ядро и эффекты Audio HAL, находятся в общем HAL.
Последняя версия Common AIDL HAL , находящаяся в разработке, находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Последняя выпущенная версия Common HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Распространенные стабильные типы данных
Определения стабильной структуры данных используются как HAL, так и фреймворком.
Последняя версия стабильных типов данных, находящихся в разработке, находится в
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Последняя выпущенная версия стабильных типов данных находится в
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Тестирование API Audio AIDL HAL
Для интерфейса AIDL предусмотрены новые тесты VTS .
В новой версии HAL нет изменений, которые могли бы повлиять на безопасность.