O Android Automotive OS (AAOS) baseia-se na pilha de áudio principal do Android para oferecer suporte aos casos de uso para operar como sistema de infoentretenimento em um veículo. AAOS é responsável pelos sons de infoentretenimento (ou seja, mídia, navegação e comunicações), mas não é diretamente responsável por sinos e avisos que tenham requisitos rígidos 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 tomar a decisão sobre quais sons devem ser reproduzidos para o motorista e passageiros, garantindo que sons críticos de segurança e sons regulatórios sejam ouvidos adequadamente sem interrupção.
Como o AAOS aproveita a pilha de áudio do Android, aplicativos de terceiros que reproduzem áudio não precisam fazer nada diferente do que fariam em telefones. O roteamento de áudio do aplicativo é gerenciado automaticamente pelo AAOS conforme descrito em Configuração da política de áudio .
À medida que o Android gerencia a experiência de mídia do veículo, as fontes de mídia externas, como o sintonizador de rádio, devem ser representadas por aplicativos, que podem lidar com o foco de áudio e os principais eventos de mídia da fonte.
Sons e streams do Android
Os sistemas de áudio automotivos lidam com os seguintes sons e fluxos:
Figura 1. Diagrama de arquitetura centrada em fluxo.
O Android gerencia os sons provenientes de aplicativos Android, controlando esses aplicativos e roteando seus sons para dispositivos de saída no HAL com base no tipo de som:
Os fluxos lógicos , conhecidos como fontes na nomenclatura principal de áudio, são marcados com atributos de áudio .
Fluxos físicos , conhecidos como dispositivos na nomenclatura central de áudio, não possuem informações de contexto após a mixagem.
Para maior confiabilidade, sons externos (provenientes de fontes independentes, como avisos sonoros de cintos de segurança) são gerenciados fora do Android, abaixo do HAL ou até mesmo em hardware separado. Os implementadores do sistema devem fornecer um mixer que aceite um ou mais fluxos de entrada de som do Android e, em seguida, combine esses fluxos de maneira adequada com as fontes de som externas exigidas pelo veículo. O Android Control HAL fornece um mecanismo diferente para que sons gerados fora do Android se comuniquem com o Android:
- Solicitação de foco de áudio
- Limitações de ganho ou volume
- Mudanças de ganho e volume
A implementação de áudio HAL e o mixer externo são responsáveis por garantir que os sons externos críticos para a segurança sejam ouvidos e por mixar os fluxos fornecidos pelo Android e encaminhá-los para alto-falantes adequados.
Sons do Android
Os aplicativos podem ter um ou mais players que interagem por meio de APIs padrão do Android (por exemplo, AudioManager para controle de foco ou MediaPlayer para streaming) para emitir um ou mais fluxos 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 fonte única. O fluxo do aplicativo está associado a AudioAttributes que fornecem dicas ao sistema sobre como o áudio deve ser expresso.
Os fluxos lógicos são enviados através do AudioService e roteados para um (e apenas um) dos fluxos de saída físicos disponíveis, cada um dos quais é a saída de um mixer dentro do AudioFlinger. Depois que os atributos de áudio forem mixados em um fluxo físico, eles não estarão mais disponíveis.
Cada fluxo físico é então entregue ao HAL de áudio para renderização no hardware. Em aplicativos 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 Audio HAL fornecer os dados de amostra reais e torná-los audíveis.
Fluxos externos
Os fluxos de som que não devem ser roteados pelo Android (por motivos de certificação ou tempo) podem ser enviados diretamente para o mixer externo. A partir do Android 11, o HAL agora é capaz de solicitar foco para esses sons externos para informar o Android de forma que ele possa tomar as ações apropriadas, como pausar a mídia ou impedir que outras pessoas obtenham foco.
Se os fluxos externos forem fontes de mídia que devem interagir com o ambiente sonoro que o Android está gerando (por exemplo, interromper a reprodução de MP3 quando um sintonizador externo estiver ligado), esses fluxos externos deverão ser representados por um aplicativo Android. Esse aplicativo 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 adequar à política de foco do Android.
O aplicativo também é responsável por lidar com eventos importantes de mídia, como reprodução e pausa. Um mecanismo sugerido para controlar tais dispositivos externos é HwAudioSource
. Para saber mais, consulte Conectar um dispositivo de entrada no AAOS .
Dispositivos de saída
No nível de áudio HAL, 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 suporta portas endereçáveis (onde cada porta é o ponto final de um fluxo físico) e espera-se que seja o único tipo de dispositivo de saída suportado em um veículo.
Uma implementação de sistema pode usar uma porta de barramento para todos os sons do Android; nesse caso, o Android mistura tudo e entrega como um único fluxo. Alternativamente, o HAL pode fornecer uma porta de barramento para cada CarAudioContext para permitir a entrega simultânea de qualquer tipo de som. Isto torna possível que a implementação HAL misture e reduza os diferentes sons conforme desejado.
A atribuição de contextos de áudio aos dispositivos de saída é feita através do arquivo car_audio_configuration.xml
. Para saber mais, consulte Configuração da política de áudio .