A partir de Android 14, la interfaz de la HAL de audio se define con el AIDL estable. Se recomienda a los socios y proveedores de SoC que vuelvan a implementar su HAL de audio para proporcionar una interfaz de AIDL.
La extensión de la biblioteca libaudiohal
agrega compatibilidad con el framework para la HAL del AIDL.
Con la implementación de AIDL, la especificación de configuración de la política de audio se traslada a la HAL de AIDL. Con este cambio, el Administrador de políticas de audio (APM) obtiene la configuración del HAL en lugar de consumirla desde el archivo en formato XML que proporciona el proveedor.
API de HAL del AIDL de audio
En esta sección, se describen las APIs de HAL principales, de efectos y comunes para AIDL.
Usa la implementación predeterminada de la API de AIDL en /hardware/interfaces/audio/aidl/default/
como referencia cuando implementes versiones nuevas de HAL de audio que interactúen con los controladores del kernel.
Consulta el archivo README de audio de la HAL para conocer la estructura del directorio de la HAL de audio para AIDL.
HAL principal
Estas son algunas de las interfaces clave de la HAL principal que usan AIDL:
IModule.aidl
es el punto de entrada a la API.- Las transmisiones son unidireccionales y AudioFlinger las usa para enviar o recibir audio desde y hacia la HAL a través de
IStreamOut.aidl
yIStreamIn.aidl
. ITelephony.aidl
proporciona controles específicos para las funciones de telefonía.IBluetooth.aidl
proporciona controles de BT SCO y HFP que estaban enIPrimaryModule
en la API de HIDL.IConfig.aidl
proporciona parámetros de configuración para todo el sistema.ISoundDose.aidl
proporciona compatibilidad con la dosis de sonido. Para obtener más información, consulta Dosis de ruido.- La versión más reciente de la API de HAL principal en desarrollo está en
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - La versión lanzada más reciente de la API de HAL principal está en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
HAL de efectos
Estas son algunas de las interfaces clave de la HAL de efectos que usan AIDL:
IFactory.aidl
es el punto de entrada a la API.Descriptor.aidl
contiene toda la información, como las capacidades y los atributos para una implementación de efectos.Capability.aidl
define las capacidades de efectos que no cambian durante el tiempo de ejecución.Parameter.aidl
define todos los parámetros compatibles con la instancia del efecto.IEffect.aidl
se usa para configurar y controlar instancias de efectos particulares.Elementos parcelables específicos del efecto que se nombran según el efecto.
La versión más reciente de la API de HAL de efectos en desarrollo está en
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.La versión lanzada más reciente de la API de HAL de efectos se encuentra en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Consulta Efectos de audio para obtener más información.
HAL común
Las estructuras de datos y las interfaces compartidas entre varios HAL, como el HAL de BT, el principal y los HAL de audio de efectos, se encuentran en el HAL común.
La versión más reciente de la HAL del AIDL común en desarrollo se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.La versión lanzada más reciente de la API de HAL común se encuentra en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipos de datos estables comunes
Los HAL y el framework usan definiciones de estructuras de datos estables.
La versión más reciente de los tipos de datos estables en desarrollo se encuentra en
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.La versión lanzada más reciente de los tipos de datos estables se encuentra en
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Prueba la API de HAL de AIDL de audio
Se proporcionan nuevas pruebas de VTS para la interfaz AIDL.
No hay cambios en la nueva versión de HAL que puedan afectar la seguridad.