No Android 14 e versões mais recentes, a interface da HAL de áudio é definida usando a AIDL estável. Os parceiros e fornecedores de SoC são incentivados a reimplementar a HAL de áudio para fornecer uma interface AIDL.
A extensão da biblioteca libaudiohal adiciona suporte ao framework para a HAL AIDL.
Com a implementação da AIDL, a especificação de configuração da política de áudio é
transferida para a HAL da AIDL. Com essa mudança, o gerenciador de políticas de áudio (APM) recebe a
configuração do HAL em vez de consumi-la do arquivo XML
fornecido pelo fornecedor.
API Audio AIDL HAL
Esta seção descreve as APIs Core, Effects e Common HAL 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 conferir a estrutura de diretório da HAL de áudio para AIDL.
HAL principal
Algumas das principais interfaces da HAL principal, usando a AIDL, são as seguintes:
IModule.aidlé o ponto de entrada na API.- Os streams são unidirecionais e são usados pelo AudioFlinger para enviar ou receber
áudio da HAL e para a HAL usando
IStreamOut.aidleIStreamIn.aidl. ITelephony.aidloferece controles específicos para funções de telefonia.IBluetooth.aidlfornece controles de BT SCO e HFP que estavam emIPrimaryModulena API HIDL.IConfig.aidlfornece parâmetros de configuração em todo o sistema.ISoundDose.aidloferece suporte a doses sonoras. 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
Algumas das principais interfaces da HAL de efeitos, usando a AIDL, são as seguintes:
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 os recursos de efeito que não mudam no momento da execução.Parameter.aidldefine todos os parâmetros aceitos pela instância do efeito.IEffect.aidlé usado para configurar e controlar instâncias de efeitos específicas.Parceláveis específicos do efeito com o nome do efeito.
A versão mais recente da API HAL Effects em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.A versão lançada mais recente da API Effects HAL 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 HAL de BT, HALs de áudio principais e de efeitos, estão na HAL comum.
A versão mais recente do HAL do 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
As definições estáveis da estrutura de dados são usadas pelos 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 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 Audio AIDL HAL
Novos testes de VTS foram fornecidos para a interface AIDL.
Não há mudanças na nova versão do HAL que possam afetar a segurança.