В Android 14 и более поздних версиях интерфейс Audio HAL определяется с помощью стабильного AIDL . Партнерам и производителям SoC рекомендуется переписать свои Audio HAL, чтобы обеспечить интерфейс AIDL.
Расширение библиотеки libaudiohal добавляет поддержку фреймворка AIDL HAL. Благодаря реализации AIDL, спецификация конфигурации аудиополитики переносится в AIDL HAL. В результате этого изменения менеджер аудиополитики (APM) получает конфигурацию из HAL, а не из XML-файла, предоставленного поставщиком.
Аудио AIDL HAL API
В этом разделе описываются основные API-интерфейсы HAL, API с эффектами и общие API-интерфейсы для AIDL.
При внедрении новых версий аудиоинтерфейсов HAL, взаимодействующих с драйверами ядра, используйте реализацию API AIDL по умолчанию, расположенную по адресу /hardware/interfaces/audio/aidl/default/
Структуру каталогов Audio HAL для AIDL см. в файле README Audio HAL.
Core 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/. - Последняя выпущенная версия API Core HAL находится в
/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 Effects HAL находится в папке
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.Последняя выпущенная версия API Effects HAL находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Дополнительную информацию см. в разделе «Звуковые эффекты» .
Common HAL
В общем HAL используются общие структуры данных и интерфейсы, разделяемые различными HAL, такими как BT 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 нет изменений, которые могли бы повлиять на безопасность.