No Android 14 e versões mais recentes, a interface da HAL de áudio é definida usando a AIDL estável. Parceiros e fornecedores de SoC são incentivados a implementar novamente 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, na sigla em inglês) recebe a
configuração da HAL em vez de consumi-la do arquivo XML
fornecido pelo fornecedor.
API Audio AIDL HAL
Esta seção descreve as APIs Core, Efeitos e HAL comuns 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.aidl
eIStreamIn.aidl
. - O
ITelephony.aidl
oferece controles específicos para funções de telefonia. IBluetooth.aidl
fornece controles de BT SCO e HFP que estavam emIPrimaryModule
na API HIDL.IConfig.aidl
fornece parâmetros de configuração em todo o sistema.- O
ISoundDose.aidl
oferece 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 HAL principal 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 da API.Descriptor.aidl
contém todas as informações, como recursos e atributos para uma implementação de efeito.Capability.aidl
define os recursos de efeito que não mudam no momento da execução.Parameter.aidl
define 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á disponível 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 áudio, HAL de núcleo e HAL de áudio 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 de estrutura de dados estáveis 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á alterações na nova versão da HAL que possam afetar a segurança.