A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Audio
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La capa de abstracción de hardware (HAL) de audio de Android conecta las APIs de framework específicas de audio de nivel superior en android.media al controlador y hardware de audio subyacentes. En esta sección, se incluyen 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 hace referencia al código fuente relevante involucrado en la implementación.
Figura 1: Arquitectura de audio de Android
-
Framework de la aplicación
-
El framework de la aplicación incluye el código de la app, que usa las APIs de android.media para
interactuar con el hardware de audio. De forma interna, este código llama a las clases de unió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/
y frameworks/base/media/jni
.
-
Framework nativo
-
El framework nativo proporciona un equivalente nativo al paquete android.media, que llama a los proxies de IPC de Binder para acceder a los servicios específicos de audio del servidor multimedia.
El código del framework nativo se encuentra en
frameworks/av/media/libmedia
.
-
IPC de Binder
-
Los proxies de IPC de Binder facilitan la comunicación a través 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 multimedia contiene servicios de audio, que son el código real que interactúa con tus implementaciones de HAL. El servidor de contenido multimedia 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 debes implementar para que el hardware de audio funcione correctamente. Para obtener más información, consulta la interfaz de la HAL de audio y los comentarios en los archivos
*.hal
del directorio de la versión de HAL correspondiente.
-
Controlador de kernel
-
El controlador de audio interactúa con tu hardware y la implementación de HAL. Puedes usar la Arquitectura Avanzada para el Sonido en Linux (ALSA), Open Sound System (OSS) o un controlador personalizado (HAL es independiente del controlador).
Nota: Si usas ALSA, te recomendamos external/tinyalsa
para la parte del usuario del controlador debido a su licencia compatible (la biblioteca estándar en modo de usuario 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 está en el mismo nivel de arquitectura que
android.media.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Audio\n\nAndroid's audio Hardware Abstraction Layer (HAL) connects the higher-level,\naudio-specific framework APIs in [android.media](http://developer.android.com/reference/android/media/package-summary.html) to the underlying audio driver and\nhardware. This section includes implementation instructions and tips for\nimproving performance.\n\n\nAndroid audio architecture defines how audio functionality is implemented and\npoints to the relevant source code involved in the implementation.\n\n\n**Figure 1.** Android audio architecture\n\n\nApplication framework\n:\n The application framework includes the app code, which uses the [android.media](http://developer.android.com/reference/android/media/package-summary.html) APIs to\n interact with audio hardware. Internally, this code calls corresponding JNI glue\n classes to access the native code that interacts with audio hardware.\n\n\nJNI\n:\n The JNI code associated with [android.media](http://developer.android.com/reference/android/media/package-summary.html) calls lower level native code to access audio\n hardware. JNI is located in `frameworks/base/core/jni/` and\n `frameworks/base/media/jni`.\n\n\nNative framework\n:\n The native framework provides a native equivalent to the [android.media](http://developer.android.com/reference/android/media/package-summary.html) package, calling\n Binder IPC proxies to access the audio-specific services of the media server.\n Native framework code is located in `frameworks/av/media/libmedia`.\n\n\nBinder IPC\n:\n Binder IPC proxies facilitate communication over process boundaries. Proxies are\n located in `frameworks/av/media/libmedia` and begin with the letter\n \"I\".\n\n\nMedia server\n:\n The media server contains audio services, which are the actual code that\n interacts with your HAL implementations. The media server is located in\n `frameworks/av/services/audioflinger`.\n\n\nHAL\n:\n The HAL defines the standard interface that audio services call into and that\n you must implement for your audio hardware to function correctly. For more details, refer to the [audio HAL\n interface](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/audio/) and comments in the `*.hal` files of the corresponding HAL version directory.\n\n\nKernel driver\n\n: The audio driver interacts with your hardware and HAL implementation. You can use Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), or a custom driver (HAL is driver-agnostic). **Note** : If you use ALSA, we recommend\n `external/tinyalsa` for the user portion of the driver because of its\n compatible licensing (the standard user-mode library is GPL-licensed).\n\n\nAndroid native audio based on Open SL ES *(not shown)*\n:\n This API is exposed as part of\n [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html)\n and is at the same architecture level as\n [android.media](http://developer.android.com/reference/android/media/package-summary.html)."]]