La capa de abstracción de hardware (HAL) de audio de Android conecta las API del marco específicas de audio de nivel superior en android.media con el controlador de audio y el hardware subyacentes. Esta sección incluye instrucciones de implementación y sugerencias para mejorar el rendimiento.
La arquitectura de audio de Android define cómo se implementa la funcionalidad de audio y apunta al código fuente relevante involucrado en la implementación.
- 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 conexión 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 al código nativo de nivel inferior para acceder al hardware de audio. JNI se encuentra en
frameworks/base/core/jni/
yframeworks/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 del marco nativo se encuentra en
frameworks/av/media/libmedia
. - Aglutinante CIP
- Los proxies Binder IPC facilitan la comunicación más allá de 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 HAL. El servidor de medios se encuentra en
frameworks/av/services/audioflinger
. - HAL
- La 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. Para obtener más detalles, consulte la interfaz HAL de audio y los comentarios en los archivos
*.hal
del directorio de la versión HAL correspondiente. - controlador del núcleo
- El controlador de audio interactúa con su hardware y la implementación de HAL. Puede usar Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) o un controlador personalizado (HAL es independiente del controlador).
Nota : si usa ALSA, recomendamos
external/tinyalsa
para la parte del controlador del usuario 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 se expone como parte de Android NDK y tiene el mismo nivel de arquitectura que android.media .