Flags do AAOS de configuração de áudio

O Android Automotive OS (AAOS) usa flags e configurações para ativar diferentes recursos, começando com o roteamento dinâmico e indo até flags de recursos mais genéricas, como 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 Finalidade
audioUseDynamicRouting Definido no arquivo de configuração do serviço de carro para Ativar o roteamento do AAOS. A configuração precisa ser definida como true. Quando false, o roteamento e grande parte do CarAudioService são desativados, e o SO reverte para o comportamento padrão descrito em Configurar políticas de áudio.
useCoreAudioRouting Definido no arquivo de configuração do serviço de carro para ativar o gerenciamento de roteamento de áudio principal do AAOS. Quando o valor é definido como true, o serviço de áudio do carro usa as definições de configuração definidas com o mecanismo de política de áudio configurável. Se o valor for definido como false, o gerenciamento de roteamento vai usar a definição de combinação de política de áudio dinâmica do serviço de áudio do carro conforme configurado usando audioUseDynamicRouting.
useCoreAudioVolume Definido no arquivo de configuração do serviço de carro para ativar o gerenciamento de volume de áudio principal do AAOS. Quando o valor é definido como true, o serviço de áudio do carro usa as definições de grupos de volume configuradas com o mecanismo de política de áudio configurável. Se o valor for definido como false, o gerenciamento de volume vai usar a definição padrão do grupo de volume do serviço de áudio do carro, conforme configurado usando audioUseDynamicRouting.
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), a desativação do som de grupos de volume individuais é desativada. Em vez disso, a opção de ativar/desativar o som ativa/desativa o som geral. 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 de carro para ativar a API IAudioControl#onDevicesToDuckChange e informar ao HAL quando reduzir a velocidade. Quando true (valor padrão), a API recebe indicadores que mostram quais dispositivos de saída precisam ser reduzidos 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 de carro, este é o nome do componente para o serviço de personalização do OEM. Os OEMs podem implementar esse serviço para personalizar ações de serviço automotivo para diferentes políticas. Se os OEMs optarem por implementar esse componente, eles precisarão implementar um serviço para estender OemCarService exposto pela car-lib e, em seguida, implementar os serviços de componentes necessários. Para o serviço de áudio automotivo, os OEMs podem implementar qualquer um dos subserviços de áudio para gerenciar a ação de áudio. Para mais detalhes, consulte Serviço de plug-in de áudio do carro. Se o nome do componente for inválido, o CarService não se conectará a nenhum serviço OEM. O nome do componente não pode ser um pacote de terceiros. Ele precisa ser pré-instalado.
audioVolumeAdjustmentContextsVersion

Definida no arquivo de configuração do serviço de carro, a configuração para selecionar a versão da lista de prioridade do 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 de carro, configuração para manter o estado de silenciamento global. Quando true (o valor padrão), o Android restaura o estado de mudo global na inicialização. Quando audioUseCarVolumeGroupMuting é true, isso não afeta a persistência das mudanças de mudo, já que elas são baseadas em grupos de volume individuais. O valor padrão é definido como true e precisa ser substituído quando o silenciamento geral não deve ser mantido em um dispositivo.
audioVolumeKeyEventTimeoutMs

Definida no arquivo de configuração do serviço de carro, a configuração indica o tempo limite em milissegundos enquanto um grupo de volume do carro é considerado ativo para mudanças no controle de volume durante eventos de tecla de volume. A configuração é usada da seguinte maneira:

  • 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 ela para de tocar.
  • 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 é 3000 milissegundos e precisa ser ajustado pelos OEMs para personalizar a experiência do usuário.

audioUseCarVolumeGroupEvent Definida no arquivo de configuração do serviço de carro, a configuração para ativar eventos de callback em grupos de volume. Quando true, os clientes recebem callback pelo 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, o índice do grupo de volume e os callbacks de mudo do grupo de volume passam apenas por CarVolumeGroupEventCallback. Portanto, recomendamos que todos os apps migrem para a nova interface de callback para garantir uma performance consistente.
  • O valor padrão é false. Recomendamos definir isso como true porque as APIs para oferecer suporte a callbacks de volume legados estão descontinuadas e serão removidas 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 stream no mixer de software. Isso pode ser indesejável devido ao efeito potencial 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. Os novos dispositivos que não foram configurados e que estão definidos como true recebem mudanças de volume pelas APIs de volume e mudo 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 tecla de volume poderão ser encaminhados para o app em primeiro plano e gerar resultados adversos no gerenciamento de eventos de tecla de volume fora do serviço de áudio do carro.
audioUseMinMaxActivationVolume Definido no arquivo de configuração do serviço de carro para ativar o volume mínimo e máximo de ativação. Quando true, o índice de ganho de volume pode ser ajustado devido ao gerenciamento de volume de ativação mínimo e máximo. Quando false (valor padrão), o volume mínimo e máximo de ativação não entra em vigor.
audioUseFadeManagerConfiguration Definido no arquivo de configuração do serviço de carro para ativar o comportamento de perda de foco de áudio imposto pelo sistema. Quando true, o framework de áudio do carro analisa as definições de configuração de esmaecimento de áudio do carro e aplica o FadeManagerConfiguration respectivo ao despachar a perda da seleção de áudio. Quando false (valor padrão), o sistema não aplica o comportamento de esmaecimento quando um app perde a seleção de áudio.

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

Antes do Android 13, as configurações do serviço de carro eram substituídas por uma sobreposição de configuração do 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 uma RRO para mudar o valor da configuração de áudio do carro. Por exemplo, consulte os RROs para a referência automotiva cuttlefish 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.

Consulte estes recursos para mais informações:

API com recursos ativados

O método retorna true se o recurso estiver ativado no dispositivo. Caso contrário, ele retorna 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