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.
Extender la biblioteca libaudiohal
agrega compatibilidad del 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 mueve a la HAL de AIDL. Con este cambio, el Audio Policy Manager (APM) obtiene la configuración del HAL en lugar de consumirla del archivo XML proporcionado por el proveedor.
API de AIDL HAL de audio
En esta sección, se describen las APIs de HAL de Core, Effects y Common para AIDL.
Usa la implementación predeterminada de la API de AIDL en /hardware/interfaces/audio/aidl/default/
como referencia cuando implementes nuevas versiones de HAL de audio que interactúen con los controladores del kernel.
Consulta el archivo README de la HAL de audio para ver 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.- Los flujos son unidireccionales y AudioFlinger los usa para enviar o recibir audio hacia y desde 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 asistencia para 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 se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - La versión lanzada más reciente de la API de HAL principal se encuentra 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 Effects, 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 la implementación de un efecto.Capability.aidl
define las capacidades de efectos que no cambian durante el tiempo de ejecución.Parameter.aidl
define todos los parámetros admitidos por la instancia del efecto.IEffect.aidl
se usa para configurar y controlar instancias de efectos particulares.Son objetos Parcelable específicos del efecto que llevan el nombre del efecto.
La versión más reciente de la API de HAL de Effects en desarrollo se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.La versión lanzada más reciente de la API de HAL de Effects 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 que se comparten entre varias HAL, como las HAL de BT, las HAL de audio principales y las de efectos, se encuentran en la HAL común.
La versión más reciente del HAL de 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
Las 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/
.
Cómo probar la API de HAL de AIDL de audio
Se proporcionan nuevas pruebas de VTS para la interfaz de AIDL.
No hay cambios en la nueva versión del HAL que puedan afectar la seguridad.