No Android 14 e versões mais recentes, a interface da HAL de áudio é definida usando a AIDL estável. Recomendamos que os parceiros e fornecedores de SoC reimplementem a HAL de áudio para fornecer uma interface AIDL.
Estender a biblioteca libaudiohal
adiciona suporte do framework para HAL AIDL.
Com a implementação da AIDL, a especificação de configuração da política de áudio é
movida para a HAL da AIDL. Com essa mudança, o Audio Policy Manager (APM) recebe a configuração da HAL em vez de consumir o arquivo XML fornecido pelo fornecedor.
API HAL AIDL de áudio
Esta seção descreve as APIs HAL Core, Effects e Common para AIDL.
Use a implementação padrão da API AIDL em
/hardware/interfaces/audio/aidl/default/
como referência ao implementar novas versões de HALs de áudio que
interagem com drivers do kernel.
Consulte o arquivo README da HAL de áudio para ver a estrutura de diretório da HAL de áudio para AIDL.
HAL principal
Algumas das principais interfaces da HAL principal, usando AIDL, são as seguintes:
IModule.aidl
é o ponto de entrada da API.- Os streams são unidirecionais e usados pelo AudioFlinger para enviar ou receber
áudio da HAL usando
IStreamOut.aidl
eIStreamIn.aidl
. - O
ITelephony.aidl
oferece controles específicos para funções de telefonia. - O
IBluetooth.aidl
fornece controles BT SCO e HFP que estavam emIPrimaryModule
na API HIDL. - O
IConfig.aidl
fornece parâmetros de configuração em todo o sistema. - O
ISoundDose.aidl
oferece suporte à dose sonora. Consulte Dose sonora para mais informações. - A versão mais recente da API Core HAL em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - A versão lançada mais recente da API Core HAL está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
HAL de efeitos
Estas são algumas das principais interfaces da HAL de efeitos usando AIDL:
IFactory.aidl
é o ponto de entrada da API.- O
Descriptor.aidl
contém todas as informações, como recursos e atributos, para uma implementação de efeito. Capability.aidl
define recursos de efeito que não mudam durante a execução.Parameter.aidl
define todos os parâmetros compatíveis com a instância do efeito.- O
IEffect.aidl
é usado para configurar e controlar instâncias de efeitos específicos. Parcelables específicos do efeito nomeados de acordo com o efeito.
A versão mais recente da API HAL de efeitos em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.A versão lançada mais recente da API HAL de efeitos está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Consulte Efeitos de áudio para mais informações.
HAL comum
Estruturas de dados e interfaces compartilhadas entre várias HALs, como BT HAL, HALs de áudio principais e de efeitos, estão na HAL comum.
A versão mais recente do HAL AIDL comum em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.A versão lançada mais recente da API HAL comum está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipos de dados estáveis comuns
Definições de estrutura de dados estáveis são usadas por HALs e pelo framework.
A versão mais recente dos tipos de dados estáveis em desenvolvimento está em
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.A versão lançada mais recente dos tipos de dados estáveis está em
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Como testar a API HAL AIDL de áudio
Novos testes de VTS são fornecidos para a interface AIDL.
Não há mudanças na nova versão da HAL que possam afetar a segurança.