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.aidleIStreamIn.aidl. - O
ITelephony.aidloferece controles específicos para funções de telefonia. - O
IBluetooth.aidlfornece controles BT SCO e HFP que estavam emIPrimaryModulena API HIDL. - O
IConfig.aidlfornece parâmetros de configuração em todo o sistema. - O
ISoundDose.aidloferece 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.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 durante a execução.Parameter.aidldefine 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.