
A camada de abstração de hardware (HAL) de áudio do Android conecta as APIs de framework de nível superior e específicas de áudio em android.media ao driver de áudio e ao 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 de aplicativos
- O framework de aplicativo inclui o código do app, que usa as APIs android.media para interagir com hardware de áudio. Internamente, esse código chama as classes de cola 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 código nativo de nível mais baixo para acessar o hardware
de áudio. O JNI está localizado em
frameworks/base/core/jni/
eframeworks/base/media/jni
. - Framework nativo
-
O framework nativo fornece um equivalente nativo ao pacote android.media, chamando
proxies de 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 do Binder
-
Os proxies de IPC do Binder facilitam a comunicação entre limites de processos. 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 suas implementações de HAL. O servidor de mídia está localizado em
frameworks/av/services/audioflinger
. - HAL
-
A HAL define a interface padrão que os serviços de áudio chamam e que
você precisa implementar 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 da versão HAL correspondente. - Driver do kernel
-
O driver de áudio interage com seu hardware e a implementação da HAL. Você pode usar a Advanced Linux Sound Architecture (ALSA), o Open Sound System (OSS) ou um driver personalizado (a HAL é independente de driver).
Observação: se você usa ALSA, recomendamos
external/tinyalsa
para a parte do usuário do driver devido ao licenciamento compatível (a biblioteca padrão de modo de usuário é licenciada pela GPL). - Áudio nativo do Android baseado em Open SL ES (não mostrado)
- Essa API é exposta como parte do Android NDK e está no mesmo nível de arquitetura que android.media.