Panoramica

Il sistema operativo Android Automotive (AAOS) si basa sullo stack audio di Android 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 di suoni di avviso e avvisi con requisiti di disponibilità e tempistica rigorosi.

Sebbene AAOS fornisca indicatori e meccanismi per aiutare il veicolo a gestire l'audio, alla fine è il veicolo a decidere quali suoni devono essere riprodotti per il conducente e i passeggeri, garantendo che i suoni di sicurezza critici e i suoni normativi vengano ascoltati correttamente senza interruzioni.

Poiché AAOS sfrutta lo stack audio di 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 nella configurazione dei criteri audio.

Poiché Android gestisce l'esperienza multimediale del veicolo, le sorgenti multimediali esterne come il sintonizzatore radio devono essere rappresentate da app, che possono gestire l'attenzione audio e gli eventi chiave multimediali per la sorgente.

Suoni e stream di Android

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

immagine

Figura 1. Diagramma dell'architettura incentrata sui flussi.

Android gestisce i suoni provenienti dalle app Android, controllandole e inviandoli ai dispositivi di output nell'HAL in base al tipo di suono:

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

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

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

  • Richiesta di attenzione audio
  • Limitazioni di volume o guadagno
  • Variazioni di guadagno e volume

L'implementazione dell'HAL audio e il mixer esterno sono responsabili di garantire che i suoni esterni di importanza vitale vengano ascoltati, di mixare gli stream forniti da Android e di inoltrarli a speaker adatti.

Suoni Android

Le app possono avere uno o più player che interagiscono tramite le API Android standard (ad esempio AudioManager per il controllo dell'attenzione o MediaPlayer per lo streaming) per emettere uno o più stream logici di dati audio. Questi dati possono essere mono a un canale o surround 7.1, ma vengono instradati 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 solo uno) degli stream di output fisico disponibili, ciascuno 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 poi inviato all'HAL audio per il rendering sull'hardware. Nelle app per auto e motori, l'hardware di rendering può essere costituito da codec locali (come i 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 sample effettivi e renderli udibili.

Stream esterni

Gli stream audio che non devono essere instradati tramite Android (per motivi di certificazione o di tempistica) possono essere inviati direttamente al mixer esterno. A partire da Android 11, l'HAL è in grado di richiedere lo stato attivo per questi suoni esterni per informare Android in modo da poter adottare le azioni appropriate, come mettere in pausa i contenuti multimediali o impedire ad altri di concentrarsi.

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 è attivo un sintonizzatore esterno), questi stream esterni devono essere rappresentati da un'app Android. Un'app di questo tipo richiederebbe il controllo audio per conto della sorgente multimediale anziché dell'HAL e risponderebbe alle notifiche di attenzione avviando e interrompendo la sorgente esterna in base alle necessità per rispettare le norme relative all'attenzione di Android.

L'app è responsabile anche della gestione di eventi chiave multimediali come riproduzione e pausa. Un meccanismo suggerito per controllare questi dispositivi esterni èHwAudioSource. Per ulteriori informazioni, vedi Collegare un dispositivo di input in AAOS.

Dispositivi di output

A livello di Audio HAL, il tipo di dispositivo AUDIO_DEVICE_OUT_BUS fornisce un dispositivo di output generico da utilizzare nei sistemi audio dei veicoli. Il dispositivo di bus supporta le porte indirizzabili (in cui ogni porta è il punto di terminazione di uno stream fisico) ed è previsto 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 mescola tutto insieme e lo offre come un unico stream. In alternativa, l'HAL può fornire una porta di bus per ogni CarAudioContext per consentire l'invio simultaneo di qualsiasi tipo di audio. In questo modo l'implementazione HAL può mixare e attenuare i diversi suoni come desiderato.

L'assegnazione dei contesti audio ai dispositivi di output avviene tramite il car_audio_configuration.xml file. Per saperne di più, consulta la sezione Configurazione dei criteri audio.