No Android 14 e versões mais recentes, a interface da HAL de áudio é definidos usando a AIDL estável. Parceiros e fornecedores de SoC são incentivados a reimplementar sua HAL de áudio para fornecer interface AIDL.
Estender a biblioteca libaudiohal
adiciona suporte ao framework para a HAL da AIDL.
Com a implementação da AIDL, a especificação da configuração da política de áudio é
movidos para a HAL da AIDL. Com essa mudança, o Gerenciador de políticas de áudio (APM) tem acesso
configuração da HAL em vez de consumi-la do XML fornecido pelo fornecedor.
.
API HAL de áudio AIDL
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 os drivers do kernel.
Consulte a Arquivo README da HAL de áudio para a estrutura de diretórios da HAL de áudio para AIDL.
HAL principal
Algumas das interfaces principais da HAL principal, usando AIDL, são os 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 de e para a HAL usando
IStreamOut.aidl
eIStreamIn.aidl
. - O
ITelephony.aidl
oferece controles específicos para funções de telefonia. IBluetooth.aidl
oferece 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 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, que usam a AIDL, são:
IFactory.aidl
é o ponto de entrada na API.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 Effects HAL 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
.
Confira Efeitos de áudio para saber mais informações imprecisas ou inadequadas.
HAL comum
Estruturas de dados e interfaces compartilhadas entre várias HALs, como BT HAL, código e efeitos de HAL de áudio estão na HAL comum.
A versão mais recente da HAL de AIDL comum em desenvolvimento está na
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.A versão lançada mais recente da API Common HAL 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ável são usadas pelas HALs e pelo framework.
A versão mais recente dos tipos de dados estáveis em desenvolvimento está no
/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/
.
Testar a API HAL de áudio AIDL
Novo VTS são fornecidos para a interface AIDL.
Não há alterações na nova versão da HAL que possam afetar a segurança.