Panoramica

Android Automotive OS (AAOS) si basa sullo stack audio Android di base per supportare i casi d'uso per il funzionamento come sistema di infotainment in un veicolo. AAOS è responsabile dei suoni di infotainment (ovvero contenuti multimediali, navigazione e comunicazioni), ma non è direttamente responsabile dei segnali acustici e degli avvisi che hanno requisiti rigorosi di disponibilità e tempistica.

Sebbene AAOS fornisca segnali e meccanismi per aiutare il veicolo a gestire l'audio, alla fine spetta al veicolo decidere quali suoni devono essere riprodotti per il conducente e i passeggeri, assicurandosi che i suoni critici per la sicurezza e i suoni regolamentari vengano ascoltati correttamente senza interruzioni.

Poiché AAOS sfrutta lo stack audio Android, le applicazioni di terze parti che riproducono audio non devono fare nulla di diverso rispetto a quanto farebbero sugli smartphone. Il routing audio dell'applicazione viene gestito automaticamente da AAOS come descritto in Configurazione delle policy audio.

Poiché Android gestisce l'esperienza multimediale del veicolo, le sorgenti multimediali esterne, come il sintonizzatore radio, devono essere rappresentate da app in grado di gestire gli eventi di focus audio e dei tasti multimediali per la sorgente.

Suoni e stream Android

I sistemi audio per auto gestiscono i seguenti suoni e stream:

immagine

Figura 1. Diagramma dell'architettura incentrata sugli stream.

Android gestisce i suoni provenienti dalle app Android, controllando queste app e indirizzando i relativi suoni ai dispositivi di output nell'HAL in base al tipo di suono:

  • Gli stream logici, noti come sorgenti nella nomenclatura audio di base, sono taggati con attributi audio.

  • Gli stream fisici, noti come dispositivi nella nomenclatura audio di base, non hanno informazioni di contesto dopo il mixaggio.

Per motivi di affidabilità, i suoni esterni (provenienti da sorgenti indipendenti, come i segnali acustici di avviso delle cinture di sicurezza) vengono gestiti al di fuori di Android, sotto l'HAL o persino in hardware separato. Gli implementatori di sistema devono fornire un mixer che accetti uno o più stream di input audio da Android e che li combini in modo appropriato con le sorgenti audio esterne richieste dal veicolo. L' HAL di controllo Android fornisce un meccanismo diverso per i suoni generati al di fuori di Android per comunicare con Android:

  • Richiesta di focus audio
  • Limitazioni di guadagno o volume
  • Modifiche di guadagno e volume

L'implementazione dell'HAL audio e il mixer esterno sono responsabili di garantire che i suoni esterni critici per la sicurezza vengano ascoltati, di mixare gli stream forniti da Android e di indirizzarli agli altoparlanti appropriati.

Suoni Android

Le app possono avere uno o più player che interagiscono tramite le API Android standard (ad esempio AudioManager per il controllo del focus o MediaPlayer per lo streaming) per emettere uno o più stream logici di dati audio. Questi dati potrebbero essere mono a canale singolo o surround 7.1, ma vengono indirizzati e trattati come una singola sorgente. Lo stream dell'app è associato a AudioAttributes che forniscono al sistema suggerimenti su come deve essere espresso l'audio.

Gli stream logici vengono inviati tramite AudioService e indirizzati a uno (e uno solo) degli stream di output fisici disponibili, ognuno dei quali è l'output di un mixer all'interno di AudioFlinger. Una volta che gli attributi audio sono stati mixati in uno stream fisico, non sono più disponibili.

Ogni stream fisico viene quindi inviato all'HAL audio per il rendering sull'hardware. Nelle app per auto, l'hardware di rendering può essere costituito da codec locali (simili ai dispositivi mobili) o da un processore remoto sulla rete fisica del veicolo. In ogni caso, è compito dell'implementazione dell'HAL audio fornire i dati di esempio effettivi e renderli udibili.

Stream esterni

Gli stream audio che non devono essere indirizzati tramite Android (per motivi di certificazione o tempistica) possono essere inviati direttamente al mixer esterno. A partire da Android 11, l'HAL è ora in grado di richiedere il focus per 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 ottenere il focus.

Se gli stream esterni sono sorgenti multimediali che devono interagire con l'ambiente audio generato da Android (ad esempio, interrompere la riproduzione di MP3 quando viene attivato un sintonizzatore esterno), questi stream esterni devono essere rappresentati da un'app per Android. Questa app richiederebbe il focus audio per conto della sorgente multimediale anziché dell'HAL e risponderebbe alle notifiche di focus avviando e interrompendo la sorgente esterna in base alle esigenze della policy di focus di Android.

L'app è anche responsabile della gestione degli eventi dei tasti multimediali, come la riproduzione e la pausa. Un meccanismo suggerito per controllare questi dispositivi esterni è HwAudioSource. Per saperne di più, vedi Collegare un dispositivo di input in AAOS.

Dispositivi di output

A livello di HAL audio, il tipo di dispositivo AUDIO_DEVICE_OUT_BUS fornisce un dispositivo di output generico da utilizzare nei sistemi audio dei veicoli. Il dispositivo bus supporta le porte indirizzabili (dove ogni porta è l'endpoint per uno stream fisico) e si prevede che sia 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 mixa tutto e lo fornisce come un unico stream. In alternativa, l'HAL può fornire una porta bus per ogni CarAudioContext per consentire la distribuzione simultanea di qualsiasi tipo di suono. In questo modo, l'implementazione dell'HAL può mixare e attenuare i diversi suoni come preferisce.

L'assegnazione dei contesti audio ai dispositivi di output viene eseguita tramite il file car_audio_configuration.xml. Per saperne di più, vedi Configurazione delle policy audio.