La capa de abstracción de hardware (HAL) de audio de Android conecta las API de marco de audio específicas de nivel superior en android.media al controlador de audio y al hardware 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.
- 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/
yframeworks/base/media/jni
. - Marco nativo
- El marco nativo proporciona un equivalente nativo al paquete android.media , llamando a los proxies de Binder IPC 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
. - Carpeta IPC
- Los proxies de Binder IPC facilitan la comunicación a través de los límites del proceso. Los servidores proxy 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 está ubicado en
frameworks/av/services/audioflinger
. - HAL
- HAL define la interfaz estándar a la que llaman los servicios de audio y que usted debe implementar para que su hardware de audio funcione correctamente. Para obtener más detalles, consulte la interfaz de audio HAL 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 HAL. Puede utilizar Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) o un controlador personalizado (HAL es independiente del controlador).
Nota : Si utiliza 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 se expone como parte del NDK de Android y se encuentra en el mismo nivel de arquitectura que android.media .