Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Audio

Icono de Android Audio HAL

La capa de abstracción de hardware de audio (HAL) de Android conecta las API de marco específicas de audio de nivel superior en android.media con el controlador y el hardware de audio subyacentes. Esta sección incluye instrucciones de implementación y consejos para mejorar el rendimiento.

La arquitectura de audio de Android define cómo se implementa la funcionalidad de audio y señala el código fuente relevante involucrado en la implementación.

Arquitectura de audio

Figura 1. Arquitectura de audio de Android

Marco de aplicación
El marco de la aplicación incluye el código de la aplicación, que utiliza las API de android.media para interactuar con el hardware de audio. Internamente, este código llama a las clases de pegamento JNI correspondientes para acceder al código nativo que interactúa con el hardware de audio.
JNI
El código JNI asociado con android.media llama a código nativo de nivel inferior para acceder al hardware de audio. JNI se encuentra en frameworks/base/core/jni/ y frameworks/base/media/jni .
Marco nativo
El marco nativo proporciona un equivalente nativo al paquete android.media , llamando a los proxies IPC de Binder para acceder a los servicios específicos de audio del servidor de medios. El código de marco nativo se encuentra en frameworks/av/media/libmedia .
Binder IPC
Los proxies Binder IPC facilitan la comunicación sobre los límites del proceso. Los proxies se encuentran en frameworks/av/media/libmedia y comienzan con la letra "I".
Servidor multimedia
El servidor de medios contiene servicios de audio, que son el código real que interactúa con sus implementaciones de HAL. El servidor de medios se encuentra en frameworks/av/services/audioflinger .
HAL
El HAL define la interfaz estándar a la que llaman los servicios de audio y que debe implementar para que su hardware de audio funcione correctamente. Las interfaces HAL de audio se encuentran en hardware/libhardware/include/hardware . Para más detalles, vea audio.h .
Conductor del núcleo
El controlador de audio interactúa con su hardware y la implementación de HAL. Puede utilizar la Arquitectura de sonido avanzada de Linux (ALSA), el Sistema de sonido abierto (OSS) o un controlador personalizado (HAL es independiente del controlador).

Nota : Si usa ALSA, recomendamos external/tinyalsa para la parte del usuario del controlador debido a su licencia compatible (la biblioteca de modo de usuario estándar tiene licencia GPL).

Audio nativo de Android basado en Open SL ES (no se muestra)
Esta API está expuesta como parte de Android NDK y tiene el mismo nivel de arquitectura que android.media .