Routing audio multizona

Il servizio audio per auto utilizza i criteri audio dinamici di Core Audio per facilitare l'utilizzo nei casi d'uso nelle auto.

  • Riproduzione audio separata per ogni passeggero, denominata audio multizona, in cui ogni zona consente la riproduzione simultanea del suono.

  • Configurazione dinamica della zona audio.

  • Trasmissione audio della zona principale del passeggero.

  • Mirroring audio del passeggero.

In ogni caso d'uso, il servizio audio dell'auto utilizza la policy audio dinamica per indirizzare automaticamente l'audio al dispositivo di output designato.

Audio multizona

L'audio multizona consente a più utenti di interagire contemporaneamente con AAOS. Un insieme di dispositivi di output è associato a una zona e ogni zona mantiene la messa a fuoco audio e il livello del volume. I passeggeri possono ascoltare il proprio audio mentre il conducente ascolta un'altra sorgente nella zona principale (in genere, l'abitacolo principale).

Architettura audio multizona

Architettura del servizio audio per auto

Figura 1. Architettura del servizio audio per auto.

Le zone audio dell'auto sono un'astrazione degli output audio, della messa a fuoco audio e di altre impostazioni audio, tutte gestibili in modo indipendente. Ai fini del routing, ogni zona è definita come un insieme di dispositivi bus di output audio disposti nella configurazione dei criteri audio. I dispositivi variano a seconda della definizione di ogni zona audio. Nella Figura 1, i dispositivi bus da 1 a 5 appartengono alla zona zero, i dispositivi bus da 6 a 8 appartengono alla zona 1 e i dispositivi bus da 9 a 11 appartengono alla zona 2.

Configurazione audio dell'auto

In genere, i dispositivi di output vengono assegnati a una zona audio. Ogni zona audio è definita in car_audio_configuration.xml. Il seguente snippet di codice mostra una configurazione audio per l'auto per la Figura 1:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId è una definizione di servizio auto gestita da CarOccupantZoneManager. Viene utilizzato nelle auto per definire una mappatura di un utente nell'auto a una posizione specifica del sedile. CarOccupantZoneService definisce anche la mappatura dalla zona occupata a display, altre periferiche e all'utente una volta che quest'ultimo ha eseguito l'accesso a un display. Una zona audio ha:

  • Un ID zona audio e un ID zona occupante.

    • Mappa la zona audio sulla zona occupante (sedile, display e altre periferiche)
    • Mappa l'ID utente assegnato a una zona audio al momento dell'accesso
  • Un elenco di configurazioni audio. Ogni configurazione audio ha un insieme di gruppi di volumi. Ogni gruppo di volumi ha un insieme di dispositivi bus audio.

    • Quando il volume viene modificato, tutti i dispositivi audio di un gruppo vengono controllati nello stesso modo.

    • A ogni dispositivo audio viene assegnato un elenco di attributi audio. Queste informazioni vengono utilizzate per creare i mix delle norme audio con attributi audio assegnati in modo diverso.

Questa configurazione consente di indirizzare diversi utilizzi degli attributi audio a diversi dispositivi di output in ogni zona. A seconda del caso d'uso, possono essere riprodotti contemporaneamente suoni diversi. Ad esempio, puoi scegliere di configurare l'abitacolo (zona principale) per riprodurre i suoni multimediali su tutti gli speaker, ma i suoni di navigazione solo sugli speaker più vicini al conducente. Con la riproduzione simultanea dell'audio, l'abitacolo principale continua ad ascoltare i contenuti multimediali mentre la navigazione viene fornita al conducente.

Flusso di lavoro di accesso del passeggero con audio multizona

Il seguente diagramma di sequenza mostra il flusso per l'attivazione del routing audio quando un passeggero accede al proprio display:

immagine

Figura 2.

In questa sequenza, l'accesso dell'utente viene propagato al servizio audio dell'auto tramite il servizio di zona occupante.

  1. Il servizio audio dell'auto (per una zona audio specifica) utilizza l'API AudioPolicy#removeUserIdDeviceAffinity per rimuovere le affinità dei dispositivi dell'utente. Questa API accetta un ID utente. In questo caso, l'utente della zona precedente.

  2. L'API AudioPolicy#setUserIdDeviceAffinity assegna il nuovo utente a una zona, che prende l'ID utente e tutti i dispositivi per una configurazione di zona specifica.

Configurazioni delle zone dinamiche

In Android 14, vengono introdotte configurazioni dinamiche delle zone per consentire agli OEM di configurare diversi set di dispositivi per i passeggeri. Il caso d'uso consente ai passeggeri del sedile posteriore di passare da un altoparlante del poggiatesta del sedile posteriore a una periferica per cuffie del sedile posteriore.

In questo caso, sono necessarie due configurazioni. Uno per il poggiatesta del sedile posteriore e uno per le cuffie. L'audio di un utente specifico viene indirizzato solo a una configurazione alla volta.

Flusso di lavoro di configurazione delle zone dinamiche

Figura 3. Workflow di configurazione delle zone dinamiche.

La Figura 3 illustra l'architettura del flusso di lavoro di configurazione della zona dinamica. La zona audio 1 contiene due configurazioni, Config 0 e Config 1, che sono associate rispettivamente all'altoparlante del dispositivo di output e al poggiatesta.

Al momento dell'accesso, all'utente viene assegnata automaticamente la configurazione predefinita. Quando l'utente sceglie di modificare le configurazioni, in genere tramite un'interfaccia utente di sistema, il servizio audio dell'auto esegue il passaggio da una configurazione all'altra. In questo modo, il dispositivo di output viene commutato tra l'altoparlante Z1 e il poggiatesta Z1.

Lo snippet di codice riportato di seguito mostra la configurazione di questa zona dinamica.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

Per facilitare la gestione delle configurazioni audio, il gestore audio dell'auto espone API per gestire le configurazioni:

  • Configurazioni delle query disponibili per una zona.
  • Esegui una query sulla configurazione attualmente impostata per una zona.
  • Passa a una configurazione diversa.

Un servizio o un'app UI di sistema può utilizzare queste API per gestire la configurazione della zona audio, come mostrato nella Figura 4. L'API Query espone i due valori al passeggero. L'utente può selezionare una configurazione diversa toccando un comando per la configurazione desiderata.

Flusso di lavoro di configurazione delle zone dinamiche

Figura 4. Workflow di configurazione delle zone dinamiche.

Trasmissione audio per i passeggeri della zona principale

La trasmissione audio per i passeggeri della zona principale è una funzionalità introdotta in Android 14 per consentire ai passeggeri di trasmettere l'audio dei contenuti multimediali nella zona principale. In questo modo l'audio dei contenuti multimediali del passeggero può essere trasmesso alla cabina principale, mentre il conducente mantiene il pieno controllo.

La figura seguente mostra una versione semplificata dell'architettura per la trasmissione audio dei contenuti multimediali per i passeggeri della zona principale.

Flusso di lavoro di configurazione delle zone dinamiche

Figura 5. Workflow di configurazione delle zone dinamiche.

L'immagine mostra che il dispositivo di output multimediale per il conducente è condiviso con il passeggero, ma ciò avviene solo mentre il passeggero è in modalità trasmissione alla zona principale. Il criterio audio dinamico viene utilizzato anche per gestire il routing audio per il driver, ma non vengono applicate modifiche alle affinità dei dispositivi per il driver. Per il passeggero, l'elenco dei dispositivi di output viene modificato come segue:

  • Il dispositivo di output multimediale per il passeggero viene rimosso dall'elenco dei dispositivi
  • Il dispositivo di output multimediale per il conducente viene aggiunto all'elenco dei dispositivi
  • I dispositivi di uscita rimanenti per le zone audio del passeggero rimangono nell'elenco dei dispositivi

Questo nuovo elenco di dispositivi viene assegnato al passeggero dall'API AudioPolicy#setUserIdDeviceAffinity. I parametri passati all'API sono l'elenco dei dispositivi e l'ID utente del passeggero. Quando il servizio di policy audio del sistema audio esegue una query per selezionare il mix audio per una traccia multimediale associata al passeggero, viene selezionato il mix audio multimediale associato alla zona principale.

Un requisito fondamentale per la trasmissione audio della zona principale è che il dispositivo di output multimediale della zona principale sia isolato da altri utilizzi degli attributi audio. In caso contrario, durante la creazione dei mix audio, vengono aggiunti altri attributi audio al mix. Quando la selezione del mix viene eseguita dal sistema audio, tutti i suoni allegati al mix vengono selezionati per la riproduzione nell'abitacolo principale.

Mirroring audio della zona del passeggero

La funzionalità di mirroring audio consente ai passeggeri di condividere l'audio. La funzionalità di mirroring duplica i dati audio in ogni zona audio in modo che tutti i passeggeri possano ascoltare lo stesso audio. In questo caso, la messa a fuoco dell'audio viene condivisa con i passeggeri coinvolti nel mirroring audio.

Routing di mirroring audio

Per attivare il mirroring audio sono necessari almeno due passeggeri. Di conseguenza, una configurazione audio con solo due zone audio per i passeggeri richiederebbe un dispositivo di output dello specchio. Con la definizione precedente, è possibile avviare due sessioni di mirroring simultanee.

La figura seguente mostra un diagramma semplificato del mirroring audio multizona tra due passeggeri. L'audio di entrambi i passeggeri viene indirizzato a un dispositivo di mirroring audio, bus_1000. L'HAL audio duplica il segnale nelle zone di origine.

Flusso di lavoro di configurazione delle zone dinamiche

Figura 6. Workflow di configurazione delle zone dinamiche.

Questo routing è abilitato solo quando i passeggeri sono in modalità mirroring. In caso contrario, i dispositivi corrispondenti alla zona audio vengono assegnati ai passeggeri. Quando la funzionalità di mirroring viene attivata per la prima volta per un passeggero, l'API AudioPolicy#setUserIdDeviceAffinity modifica il percorso:

  • Il dispositivo di output multimediale per il passeggero viene rimosso dall'elenco dei dispositivi.
  • Il dispositivo di output mirroring è stato aggiunto all'elenco dei dispositivi.
  • I dispositivi di uscita rimanenti per la zona audio del passeggero rimangono nell'elenco dei dispositivi.

Con l'elenco dei dispositivi, l'API viene chiamata con l'elenco aggiornato dei dispositivi e l'ID utente del passeggero. L'immagine seguente mostra un diagramma di sequenza del flusso di lavoro di mirroring audio.

Flusso di lavoro di mirroring audio

Figura 7. Flusso di lavoro di mirroring audio.

Nella Figura 7, le API del gestore audio dell'auto per la gestione del mirroring audio vengono chiamate dal servizio di sistema multimediale. Nello specifico, l'API per attivare il mirroring audio per l'utente 1 e l'utente 2, CarAudioManager#enableMirrorForAudioZones.

Il servizio audio dell'auto configura il routing audio per i passeggeri come descritto sopra. Il servizio audio dell'auto invia anche un segnale all'HAL audio per configurare e duplicare l'audio dal dispositivo specchio nelle zone corrispondenti.

Nell'immagine sopra, il servizio audio per auto invia mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

dove

bus_1000 è il bus di origine e bus_10 e bus_20 sono i bus di destinazione.

Nel diagramma di sequenza non viene mostrato il segnale inviato tramite l'API AudioManager#setParameters, che raggiunge l'HAL tramite il servizio audio.

Quando lo specchio audio viene disattivato, viene inviato il seguente segnale: mirroring_src=bus_1000;mirroring=off. Questo segnale può essere utilizzato dall'HAL per disattivare la duplicazione audio quando il mirroring audio non è attivato. Per definire i dispositivi di mirroring audio, il file di configurazione dell'audio dell'auto contiene una sezione denominata mirroringDevices, come mostrato nello snippet di seguito.

In questo snippet vengono definiti due dispositivi di mirroring, bus_1000 e bus_2000, in modo che quattro passeggeri possano utilizzare il mirroring audio.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>