Il sistema operativo Android Automotive (AAOS) si basa sullo stack audio Android principale per supportare i casi d'uso per il funzionamento come sistema di infotainment in un veicolo. AAOS è responsabile dei suoni dell'infotainment (ovvero contenuti multimediali, navigazione e comunicazioni), ma non è direttamente responsabile dei segnali acustici e degli avvisi che hanno rigidi requisiti di disponibilità e tempistica.
Sebbene AAOS fornisca segnali e meccanismi per aiutare il veicolo a gestire l'audio, alla fine spetta al veicolo effettuare la chiamata su quali suoni dovrebbero essere riprodotti per il conducente e i passeggeri, garantendo che i suoni critici per la sicurezza e i suoni normativi vengano correttamente ascoltati senza interruzione.
Poiché AAOS sfrutta lo stack audio Android, le applicazioni di terze parti che riproducono l'audio non devono fare nulla di diverso da quanto farebbero nei telefoni. Il routing audio dell'applicazione viene gestito automaticamente da AAOS come descritto in Configurazione dei criteri audio .
Poiché Android gestisce l'esperienza multimediale del veicolo, le fonti multimediali esterne come il sintonizzatore radio dovrebbero essere rappresentate da app, che possono gestire il focus audio e gli eventi chiave multimediali per la fonte.
Suoni e stream Android
I sistemi audio automobilistici gestiscono i seguenti suoni e flussi:
Figura 1. Diagramma dell'architettura incentrata sul flusso.
Android gestisce i suoni provenienti dalle app Android, controllando tali app e indirizzandone i suoni ai dispositivi di output nell'HAL in base al tipo di suono:
I flussi logici , noti come sorgenti nella nomenclatura audio principale, sono contrassegnati con attributi audio .
I flussi fisici , noti come dispositivi nella nomenclatura audio principale, non hanno informazioni di contesto dopo il missaggio.
Per motivi di affidabilità, i suoni esterni (provenienti da fonti indipendenti, come i segnali acustici delle cinture di sicurezza) vengono gestiti all'esterno di Android, sotto l'HAL o anche in hardware separato. Gli implementatori del sistema devono fornire un mixer che accetti uno o più flussi di input audio da Android e quindi combini tali flussi in modo adeguato con le sorgenti sonore esterne richieste dal veicolo. L' HAL di controllo Android fornisce un meccanismo diverso per consentire ai suoni generati all'esterno di Android di comunicare con Android:
- Richiesta di messa a fuoco audio
- Limitazioni di guadagno o volume
- Guadagno e variazioni di volume
L'implementazione dell'HAL audio e il mixer esterno sono responsabili di garantire che i suoni esterni critici per la sicurezza vengano ascoltati e di mixare i flussi forniti da Android e instradarli agli altoparlanti adatti.
Suoni Android
Le app possono avere uno o più lettori che interagiscono tramite le API Android standard (ad esempio, AudioManager per il controllo dello stato attivo o MediaPlayer per lo streaming) per emettere uno o più flussi logici di dati audio. Questi dati potrebbero essere mono a canale singolo o surround 7.1, ma vengono instradati e trattati come un'unica sorgente. Lo stream dell'app è associato ad AudioAttributes che forniscono suggerimenti al sistema su come esprimere l'audio.
I flussi logici vengono inviati tramite AudioService e instradati a uno (e solo uno) dei flussi di output fisici disponibili, ognuno dei quali è l'output di un mixer all'interno di AudioFlinger. Dopo che gli attributi audio sono stati mixati in un flusso fisico, non sono più disponibili.
Ogni flusso fisico viene quindi consegnato all'HAL audio per il rendering sull'hardware. Nelle app automobilistiche, l'hardware di rendering può essere costituito da codec locali (simili ai dispositivi mobili) o da un processore remoto attraverso la rete fisica del veicolo. In ogni caso, è compito dell'implementazione dell'HAL audio fornire i dati del campione effettivo e renderli udibili.
Flussi esterni
I flussi audio che non devono essere instradati tramite Android (per ragioni di certificazione o temporizzazione) potrebbero essere inviati direttamente al mixer esterno. A partire da Android 11, l'HAL è ora in grado di richiedere la messa a fuoco di questi suoni esterni per informare Android in modo che possa intraprendere azioni appropriate come mettere in pausa i contenuti multimediali o impedire ad altri di concentrarsi.
Se i flussi esterni sono fonti multimediali che dovrebbero interagire con l'ambiente sonoro generato da Android (ad esempio, interrompere la riproduzione di MP3 quando un sintonizzatore esterno è acceso), tali flussi esterni dovrebbero essere rappresentati da un'app Android. Un'app di questo tipo richiederebbe il focus audio per conto della fonte multimediale anziché dell'HAL e risponderebbe alle notifiche del focus avviando e arrestando la fonte esterna secondo necessità per adattarsi ai criteri di focus di Android.
L'app è anche responsabile della gestione di eventi chiave multimediali come riproduzione e pausa. Un meccanismo suggerito per controllare tali dispositivi esterni è HwAudioSource
. Per ulteriori informazioni, consulta Collegare un dispositivo di input in AAOS .
Dispositivi di uscita
A livello HAL audio, il tipo di dispositivo AUDIO_DEVICE_OUT_BUS
fornisce un dispositivo di output generico da utilizzare nei sistemi audio del veicolo. Il dispositivo bus supporta porte indirizzabili (dove ciascuna porta è il punto finale di un flusso fisico) e dovrebbe essere l'unico tipo di dispositivo di output supportato in un veicolo.
Un'implementazione di sistema può utilizzare una porta bus per tutti i suoni Android, nel qual caso Android mescola tutto insieme e lo fornisce come un unico flusso. In alternativa, l'HAL può fornire una porta bus per ciascun CarAudioContext per consentire la consegna simultanea di qualsiasi tipo di suono. Ciò consente all'implementazione HAL di mescolare e attenuare i diversi suoni come desiderato.
L'assegnazione dei contesti audio ai dispositivi di output avviene tramite il file car_audio_configuration.xml
. Per ulteriori informazioni, consulta Configurazione dei criteri audio .