Sinalizações do AAOS de configuração de áudio

O Android Automotive OS (AAOS) usa flags e configurações para ativar diferentes recursos, começando pelo roteamento dinâmico para flags de recursos mais genéricas, como o controle de volume do serviço do carro. As flags de configuração atuais do AAOS para gerenciamento de áudio são descritas aqui.

Sinalização Objetivo
audioUseDynamicRouting Definido no arquivo de configuração do serviço do carro para Ativar o roteamento do AAOS. A configuração precisa ser definida como true. Quando false, o roteamento e grande parte de CarAudioService são desativados, o SO volta ao comportamento padrão descrito em Como configurar políticas de áudio.
audioUseCarVolumeGroupMuting Definido no arquivo de configuração do serviço de carro para ativar o silenciamento de grupos de volume individuais. Quando definido como false (o valor padrão), o silenciamento de grupos de volume individuais é desativado. Em vez disso, o botão de ativação/desativação de som principal é ativado. Quando definido como true, o silenciamento do grupo de volume do carro é ativado, e cada grupo de volume individual pode ser silenciado separadamente. Quando true, o silenciamento do grupo de volume precisa ser implementado no HAL de controle de áudio.
audioUseHalDuckingSignals Definido no arquivo de configuração do serviço do carro para permitir que a API IAudioControl#onDevicesToDuckChange informe o HAL quando precisar se esconder. Quando true (valor padrão), a API recebe sinais indicando quais dispositivos de saída devem ser ocultados e quais usos mantêm o foco. Quando false, a API não é chamada. A API não é chamada, a menos que o HAL de controle de áudio implemente o ducking.
config_oemCarService Definido no arquivo de configuração do serviço do carro, é o nome do componente do serviço de personalização do OEM. Os OEMs podem implementar esse serviço para personalizar as ações de serviço do carro para diferentes políticas. Se os OEMs optarem por implementar esse componente, eles precisarão implementar um serviço para estender OemCarService exposto por car-lib e, em seguida, implementar os serviços de componentes necessários. Para o serviço de áudio do carro especificamente, os OEMs podem implementar qualquer um dos subserviços de áudio para gerenciar a ação de áudio. Para saber mais, consulte Serviço de plug-in de áudio para carros. Se o nome do componente for inválido, o CarService não vai se conectar a nenhum serviço OEM. O nome do componente não pode ser um pacote de terceiros. Ele precisa estar pré-instalado.
audioVolumeAdjustmentContextsVersion

Definido no arquivo de configuração do serviço do carro, configuração para selecionar a versão da lista de prioridade de contexto de ajuste de volume.

A versão 1 inclui todos os contextos de áudio nesta ordem:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

A versão 2 é limitada aos seguintes contextos, nesta ordem.

A versão padrão é 1.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState Definido no arquivo de configuração do serviço do carro, a configuração para manter o estado de silenciamento global. Quando true (o valor padrão) é usado, o Android restaura o estado de silenciamento global na inicialização. Quando audioUseCarVolumeGroupMuting é true, isso não afeta as mudanças de mudo persistente, já que as mudanças são baseadas em grupos de volume individuais. O valor padrão é definido como true e precisa ser substituído quando o silenciamento principal não pode ser mantido para um dispositivo.
audioVolumeKeyEventTimeoutMs

Definido no arquivo de configuração do serviço do carro, a configuração para indicar o tempo limite em milissegundos enquanto um grupo de volume do carro é considerado ativo para mudanças de controle de volume durante eventos de tecla de volume. A configuração é usada desta forma:

  • O tempo limite é usado para determinar se uma reprodução (volume de áudio associado ao uso de áudio da reprodução) ainda pode ser considerada para a seleção automática de volume depois que a reprodução é interrompida.
  • O tempo limite também é usado como a duração da pausa necessária entre os ajustes automáticos de volume para mudar o que o usuário está ajustando.

O valor padrão é de 3000 milissegundos e precisa ser ajustado pelos OEMs para personalizar a experiência do usuário.

audioUseCarVolumeGroupEvent Definido no arquivo de configuração do serviço de carro, configuração para ativar eventos de callback para grupos de volume. Quando true, os clientes recebem um callback por ICarVolumeGroupEvent para eventos que afetam grupos de volume. Quando ativado:

  • Recomendamos que os fornecedores também ofereçam suporte a IAudioControl#setModuleChangeCallback e IAudioControl#registerGainCallback para eventos e mudanças no hardware de áudio.
  • Quando CarVolumeCallback e CarVolumeGroupEventCallback são registrados pelo mesmo app, os callbacks de índice e de desativação do grupo de volume são enviados somente para CarVolumeGroupEventCallback. Portanto, recomendamos que todos os apps migrem para a nova interface de callback para garantir um desempenho consistente.
  • O valor padrão é false. Recomendamos que você defina esse valor como true, porque as APIs para oferecer suporte a callbacks de volume legados foram descontinuados e serão removidos em breve.

config_useFixedVolume Definido em frameworks/base/core/res/res/values/config.xml. Precisa ser definido como true para permitir que o serviço de áudio do carro gerencie o controle de volume. Quando a flag config_useFixedVolume não está definida ou está definida como false (o valor padrão), os apps podem chamar as APIs de gerenciamento de volume AudioManager e mudar o volume por tipo de transmissão no mixer de software. Isso pode ser indesejável devido ao possível efeito em outros apps e ao fato de que a atenuação de volume no mixer de software pode resultar em menos bits significativos disponíveis no sinal quando recebido no amplificador de hardware. Novos dispositivos que não foram configurados e que estão definidos como true recebem mudanças de volume pelas APIs de volume e silenciamento AudioManager.
config_handleVolumeKeysInWindowManager Definido em frameworks/base/core/res/res/values/config.xml, precisa ser definido como true para permitir que o serviço de áudio do carro intercepte eventos de teclas de volume. Se definido como false (o valor padrão), os eventos de teclas de volume podem ser encaminhados para o app em primeiro plano e podem levar a resultados adversos do gerenciamento de eventos de teclas de volume fora do serviço de áudio do carro.

Configurações do serviço de áudio do carro

Antes do Android 13, as configurações de serviço de carro eram substituídas por uma sobreposição de configuração de produto. Para saber mais, consulte Personalizar o build com sobreposições de recursos para o arquivo packages/services/Car/service/res/values/config.xml.

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

O local do arquivo de configuração de <path_to_overlay> para o local real precisa incluir packages/services/Car/service/res/values/.

RROs de serviços automotivos

Desde o Android 13, o AAOS oferece suporte a sobreposições de recursos no momento da execução. Use um RRO para mudar o valor da configuração de áudio do carro. Por exemplo, consulte as RROs para a referência cuttlefish automotiva em device/google/cuttlefish/shared/auto/rro_overlay/. A configuração audioUseDynamicRouting é substituída em device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml.

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
...

O mapa de sobreposição de recursos está contido em device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml:

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

O manifesto de sobreposição de recursos definido em device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml contém o targetPackage definido como com.android.car.updatable.

Confira estes recursos para mais informações:

API com recurso ativado

O método retorna true se o recurso estiver ativado no dispositivo. Caso contrário, ele retornará false. Na API CarAudioManager#isAudioFeatureEnabled, o parâmetro transmitido precisa ser um dos seguintes:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING