O Android Automotive OS (AAOS) é baseado na pilha de áudio principal do Android para oferecer suporte aos casos de uso de operação como o sistema de infoentretenimento em um veículo. O AAOS é responsável por sons de infoentretenimento (ou seja, mídia, navegação e comunicação), mas não é diretamente responsável por toques e avisos que têm requisitos rigorosos de disponibilidade e tempo.
Embora o AAOS forneça sinais e mecanismos para ajudar o veículo a gerenciar o áudio, no final, cabe ao veículo fazer a chamada sobre quais sons devem ser reproduzidos para o motorista e os passageiros, garantindo que os sons críticos de segurança e os sons regulamentares sejam ouvidos corretamente sem interrupção.
Como o AAOS aproveita a pilha de áudio do Android, os aplicativos de terceiros que tocam áudio não precisam fazer nada diferente do que fariam em smartphones. O roteamento de áudio do aplicativo é gerenciado automaticamente pelo AAOS, conforme descrito em Configuração da política de áudio.
Como o Android gerencia a experiência de mídia do veículo, as fontes de mídia externas, como o sintonizador de rádio, precisam ser representadas por apps, que podem processar o foco de áudio e eventos de tecla de mídia para a fonte.
Sons e streams do Android
Os sistemas de áudio automotivo processam os seguintes sons e streams:
Figura 1. Diagrama de arquitetura com foco em fluxos.
O Android gerencia os sons que vêm de apps Android, controlando esses apps e encaminhando os sons para dispositivos de saída no HAL com base no tipo de som:
Os fluxos lógicos, conhecidos como origens na nomenclatura de áudio principal, são marcados com Atributos de áudio.
Os fluxos físicos, conhecidos como dispositivos na nomenclatura de áudio principal, não têm informações de contexto após a mixagem.
Para confiabilidade, os sons externos (vindos de fontes independentes, como sinais sonoros de cinto de segurança) são gerenciados fora do Android, abaixo do HAL ou até mesmo em hardwares separados. Os implementadores do sistema precisam fornecer um mixer que aceite um ou mais streams de entrada de som do Android e combine esses streams de forma adequada com as fontes de som externas exigidas pelo veículo. A HAL de controle do Android oferece um mecanismo diferente para que sons gerados fora do Android se comuniquem de volta ao Android:
- Solicitação de seleção de áudio
- Ganho ou limitações de volume
- Ganho e mudanças no volume
A implementação do HAL de áudio e o mixer externo são responsáveis por garantir que os sons externos críticos para a segurança sejam ouvidos e por misturar os streams fornecidos pelo Android e direcioná-los para alto-falantes adequados.
Sons do Android
Os apps podem ter um ou mais players que interagem usando as APIs padrão do Android (por exemplo, AudioManager para controle de foco ou MediaPlayer para streaming) para emitir um ou mais streams lógicos de dados de áudio. Esses dados podem ser mono de canal único ou surround 7.1, mas são roteados e tratados como uma única fonte. O stream do app está associado a AudioAttributes, que dão dicas ao sistema sobre como o áudio deve ser expresso.
Os streams lógicos são enviados pelo AudioService e roteados para um (e apenas um) dos streams de saída física disponíveis, cada um deles é a saída de um mixer no AudioFlinger. Depois que os atributos de áudio são misturados em um stream físico, eles não estão mais disponíveis.
Cada stream físico é entregue ao HAL de áudio para renderização no hardware. Em apps automotivos, o hardware de renderização pode ser codecs locais (semelhantes aos dispositivos móveis) ou um processador remoto na rede física do veículo. De qualquer forma, é função da implementação do HAL de áudio fornecer os dados de amostra reais e torná-los audíveis.
Fluxos externos
Os streams de som que não podem ser roteados pelo Android (por motivos de certificação ou de tempo) podem ser enviados diretamente para o mixer externo. A partir do Android 11, o HAL agora pode solicitar o foco para esses sons externos para informar o Android e realizar ações adequadas, como pausar mídia ou impedir que outros ganhem o foco.
Se os streams externos forem fontes de mídia que precisam interagir com o ambiente de som que o Android está gerando (por exemplo, interromper a reprodução de MP3 quando um sintonizador externo estiver ativado), esses streams externos precisam ser representados por um app Android. Esse app solicitaria o foco de áudio em nome da fonte de mídia em vez do HAL e responderia às notificações de foco iniciando e interrompendo a fonte externa conforme necessário para se encaixar na política de foco do Android.
O app também é responsável por processar eventos de chave de mídia, como reproduzir e
pausar. Um mecanismo sugerido para controlar esses dispositivos externos é
HwAudioSource
. Para saber mais, consulte
Conectar um dispositivo de entrada no AAOS.
Dispositivo de saída
No nível da HAL de áudio, o tipo de dispositivo AUDIO_DEVICE_OUT_BUS
fornece um
dispositivo de saída genérico para uso em sistemas de áudio de veículos. O dispositivo de barramento oferece suporte a
portas endereçáveis (em que cada porta é o ponto final de um fluxo físico) e
é esperado que seja o único tipo de dispositivo de saída com suporte em um veículo.
Uma implementação do sistema pode usar uma porta de barramento para todos os sons do Android. Nesse caso, o Android mistura tudo e o envia como um stream. Como alternativa, a HAL pode fornecer uma porta de barramento para cada CarAudioContext para permitir a entrega simultânea de qualquer tipo de som. Isso permite que a implementação do HAL misture e abaixe os diferentes sons conforme desejado.
A atribuição de contextos de áudio a dispositivos de saída é feita pelo
arquivo car_audio_configuration.xml
. Para saber mais, consulte
Configuração da política de áudio.