Начиная с Android 14, интерфейс Audio HAL определяется с помощью Stable AIDL . Партнерам и поставщикам SoC рекомендуется переопределить свой Audio HAL, чтобы обеспечить интерфейс AIDL.
Расширение библиотеки libaudiohal
добавляет поддержку AIDL HAL. При реализации AIDL спецификация конфигурации политики аудио переносится в AIDL HAL. Благодаря этому изменению диспетчер политики аудио (APM) получает конфигурацию из HAL, а не из XML-файла, предоставленного поставщиком.
Аудио AIDL HAL API
В этом разделе описываются основные API-интерфейсы HAL, эффекты и общие API-интерфейсы HAL для AIDL.
Используйте реализацию AIDL API по умолчанию в /hardware/interfaces/audio/aidl/default/
в качестве справочной информации при реализации новых версий Audio HAL, которые взаимодействуют с драйверами ядра.
См. файл README Audio HAL для получения информации о структуре каталогов Audio HAL для AIDL.
Базовый 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
обеспечивает поддержку звуковой дозы. Дополнительную информацию см. в разделе «Доза звука» . - Последняя версия Core HAL API , находящаяся в разработке, находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Последняя выпущенная версия Core HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Эффекты ХАЛ
Вот некоторые из ключевых интерфейсов Effects HAL, использующих AIDL:
-
IFactory.aidl
— это точка входа в API. -
Descriptor.aidl
содержит всю информацию, такую как возможности и атрибуты для реализации эффекта. -
Capability.aidl
определяет возможности эффектов, которые не изменяются во время выполнения. -
Parameter.aidl
определяет все параметры, поддерживаемые экземпляром эффекта. -
IEffect.aidl
используется для настройки и управления конкретными экземплярами эффектов. Участки, специфичные для эффекта, названные в честь эффекта.
Последняя версия HAL API эффектов , находящаяся в стадии разработки, находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Последняя выпущенная версия Effects HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Дополнительную информацию см. в разделе «Аудиоэффекты» .
Общий HAL
Структуры данных и интерфейсы, совместно используемые различными HAL, такими как BT HAL, ядро и эффекты. Аудио 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/
.
Тестирование аудио AIDL HAL API
Для интерфейса AIDL предусмотрены новые тесты VTS .
В новой версии HAL нет изменений, которые могли бы повлиять на безопасность.