No Android 14 e versões mais recentes, a interface da HAL de áudio é definida usando AIDL estável. Incentivamos os parceiros e fornecedores de SoC a reimplementar a HAL de áudio para fornecer uma interface AIDL.
A extensão da biblioteca libaudiohal adiciona suporte do framework para a HAL da 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 gerenciador de políticas de áudio (APM, na sigla em inglês) recebe a configuração da HAL em vez de consumi-la do arquivo XML fornecido pelo fornecedor.
API HAL de áudio da AIDL
Esta seção descreve as APIs HAL principais, de efeitos e comuns para a 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 conferir a estrutura de diretório da HAL de áudio para a AIDL.
HAL principal
Confira algumas das principais interfaces da HAL principal, usando a AIDL:
IModule.aidlé o ponto de entrada na API.- Os streams são unidirecionais e usados pelo AudioFlinger para enviar ou receber
áudio da HAL por meio de
IStreamOut.aidleIStreamIn.aidl. ITelephony.aidlfornece controles específicos para funções de telefonia.IBluetooth.aidlfornece controles BT SCO e HFP que estavam emIPrimaryModulena API HIDL.IConfig.aidlfornece parâmetros de configuração em todo o sistema.ISoundDose.aidloferece suporte à dose sonora. Consulte Dose sonora para mais informações.- A versão mais recente da API HAL principal em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - A versão lançada mais recente da API HAL principal está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
HAL de efeitos
Confira algumas das principais interfaces da HAL de efeitos usando a AIDL:
IFactory.aidlé o ponto de entrada na API.Descriptor.aidlcontém todas as informações, como recursos e atributos, para uma implementação de efeito.Capability.aidldefine recursos de efeito que não mudam no tempo de execução.Parameter.aidldefine todos os parâmetros compatíveis com a instância de efeito.IEffect.aidlé usado para configurar e controlar instâncias de efeito específicas.Parceláveis específicos de efeito nomeados após 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
As estruturas de dados e interfaces compartilhadas entre várias HALs, como HAL de BT, HALs de áudio principais e de efeitos, estão na HAL comum.
A versão mais recente da HAL comum da AIDL 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
As definições de estrutura de dados estáveis são usadas pelas 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 de áudio da AIDL
Novos testes do 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.