A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Áudio
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A camada de abstração de hardware (HAL) de áudio do Android conecta as APIs de framework de nível mais alto
e específicas de áudio em android.media ao driver de áudio e
hardware subjacentes. Esta seção inclui instruções de implementação e dicas para melhorar a performance.
A arquitetura de áudio do Android define como a funcionalidade de áudio é implementada e
aponta para o código-fonte relevante envolvido na implementação.
Figura 1. Arquitetura de áudio do Android
-
Framework do aplicativo
-
O framework do aplicativo inclui o código do app, que usa as APIs android.media para
interagir com o hardware de áudio. Internamente, esse código chama as classes de união JNI
correspondentes para acessar o código nativo que interage com o hardware de áudio.
-
JNI
-
O código JNI associado a android.media chama o código nativo de nível inferior para acessar o
hardware de áudio. O JNI está localizado em
frameworks/base/core/jni/
e
frameworks/base/media/jni
.
-
Framework nativo
-
O framework nativo oferece um equivalente nativo ao pacote android.media, chamando
proxies IPC do Binder para acessar os serviços específicos de áudio do servidor de mídia.
O código do framework nativo está localizado em
frameworks/av/media/libmedia
.
-
IPC de vinculação
-
Os proxies de IPC do Binder facilitam a comunicação entre os limites do processo. Os proxies estão
localizados em
frameworks/av/media/libmedia
e começam com a letra
"I".
-
Servidor de mídia
-
O servidor de mídia contém serviços de áudio, que são o código real que
interage com as implementações do HAL. O servidor de mídia está localizado em
frameworks/av/services/audioflinger
.
-
HAL
-
O HAL define a interface padrão que os serviços de áudio chamam e que
precisa ser implementada para que o hardware de áudio funcione corretamente. Para mais detalhes, consulte a interface
HAL de áudio e os comentários nos arquivos
*.hal
do diretório de versão HAL correspondente.
-
Driver do kernel
-
O driver de áudio interage com o hardware e a implementação da HAL. É possível
usar a Advanced Linux Sound Architecture (ALSA), o Open Sound System (OSS) ou um
driver personalizado (o HAL não depende do driver).
Observação: se você usar o ALSA, recomendamos
external/tinyalsa
para a parte do usuário do driver devido à sua
licença compatível (a biblioteca padrão do modo de usuário tem licença GPL).
-
Áudio nativo do Android baseado no OpenSL ES (não mostrado)
-
Essa API é exposta como parte do
Android NDK
e está no mesmo nível de arquitetura que
android.media.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]