Routing audio multizona

Il servizio audio per auto utilizza la politica audio dinamica Core Audio per facilitare i casi d'uso nelle auto.

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

  • Configurazione della zona audio dinamica.

  • Trasmissione audio della zona primaria dei passeggeri.

  • Specchietto audio del passeggero.

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

Audio multizona

L'audio multizona consente a più utenti di interagire simultaneamente con AAOS. Un insieme di dispositivi di uscita è associato a una zona e ciascuna zona mantiene il focus audio e il livello del volume. I passeggeri possono ascoltare l'audio mentre il conducente ascolta un'altra sorgente nella zona principale (tipicamente la cabina principale).

Architettura audio multizona

Architettura dei servizi audio per auto

Figura 1. Architettura del servizio audio per auto.

Le zone audio dell'auto sono un'astrazione di uscite audio, focus audio e altre impostazioni audio, che possono essere tutte gestite in modo indipendente. Ai fini del routing, ciascuna zona è definita come un insieme di dispositivi bus di uscita audio disposti nella configurazione della policy audio. I dispositivi differiscono per ciascuna definizione di 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 uno e i dispositivi bus da 9 a 11 appartengono alla zona due.

Configurazione audio per auto

In genere, i dispositivi di uscita vengono assegnati a una zona audio. Ciascuna zona audio è definita in car_audio_configuration.xml . Il seguente frammento di codice mostra una configurazione audio per auto per la Figura 1:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneI="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 automobilistico gestita da CarOccupantZoneManager . Viene utilizzato nelle automobili per definire una mappatura per un utente nell'auto verso una posizione specifica del sedile. CarOccupantZoneService definisce inoltre la mappatura dalla zona dell'occupante ai display, ad altre periferiche e all'utente una volta che l'utente accede a un display. Una zona audio ha:

  • Un ID zona audio e un ID zona occupante.

    • Mappa la zona audio in base alla zona dell'occupante (sedile, display e altre periferiche)
    • Mappa quale ID utente viene assegnato a una zona audio al momento dell'accesso
  • Un elenco di configurazioni audio. Ciascuna configurazione audio dispone di una serie di gruppi di volume. Ciascun gruppo di volumi dispone di una serie di dispositivi bus audio.

    • Quando si modifica il volume, tutti i dispositivi audio di un gruppo vengono controllati allo stesso modo.

    • A ciascun dispositivo audio viene assegnato un elenco di attributi audio. Queste informazioni vengono utilizzate per costruire mix di criteri audio con attributi audio assegnati in modo diverso.

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

Flusso di lavoro di accesso audio passeggeri multizona

Il diagramma di sequenza seguente mostra il flusso per abilitare l'instradamento audio quando un passeggero accede al rispettivo display:

Immagine

Figura 2.

In questa sequenza il login dell'utente viene propagato al servizio audio dell'auto tramite il servizio zona occupanti.

  1. Il servizio audio per auto (per una zona audio specifica) utilizza l'API AudioPolicy#removeUserIdDeviceAffinity per rimuovere le affinità del dispositivo 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 accetta l'ID utente e tutti i dispositivi per una configurazione di zona specifica.

Configurazioni di zone dinamiche

In Android 14 vengono introdotte configurazioni di zone dinamiche per consentire agli OEM di configurare diversi set di dispositivi per i passeggeri. Il caso d'uso consente ai passeggeri sul sedile posteriore di passare dall'altoparlante del poggiatesta del sedile posteriore alla periferica per le cuffie del sedile posteriore.

In questo caso sono necessarie due configurazioni. Uno per il poggiatesta del sedile posteriore e uno per la periferica delle cuffie. L'audio per un utente specifico viene instradato solo a una configurazione alla volta.

Flusso di lavoro di configurazione della zona dinamica

Figura 3. Flusso di lavoro di configurazione della zona dinamica.

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

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

Lo snippet di codice riportato di seguito mostra l'impostazione per questa configurazione della 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 car audio manager espone delle API per gestire le configurazioni:

  • Configurazioni di query disponibili per una zona.
  • Interroga la configurazione attualmente impostata per una zona.
  • Passa a una configurazione diversa.

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

Flusso di lavoro di configurazione della zona dinamica

Figura 4. Flusso di lavoro di configurazione della zona dinamica.

Cast audio dei passeggeri della zona primaria

La trasmissione audio passeggeri della zona primaria è una funzionalità introdotta in Android 14 per consentire ai passeggeri di trasmettere il proprio audio multimediale nella zona primaria. In questo modo l'audio multimediale 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 il cast audio multimediale dei passeggeri della zona primaria.

Flusso di lavoro di configurazione della zona dinamica

Figura 5. Flusso di lavoro di configurazione della zona dinamica.

L'immagine mostra che il dispositivo di output multimediale per il conducente è condiviso con il passeggero, ciò accade solo mentre il passeggero è in modalità di trasmissione alla zona primaria. La policy audio dinamica viene utilizzata anche per gestire l'instradamento audio per il driver, ma non vengono applicate modifiche alle affinità del dispositivo per il driver. Per il passeggero l'elenco dei dispositivi di uscita viene modificato come segue:

  • Il dispositivo di output multimediale per il passeggero è stato rimosso dall'elenco dei dispositivi
  • Il dispositivo di output multimediale per il driver viene aggiunto all'elenco dei dispositivi
  • I restanti dispositivi di uscita per le zone audio passeggeri 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 richiede quale mix audio deve essere selezionato per una traccia multimediale associata al passeggero, viene selezionato il mix audio multimediale associato alla zona primaria.

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

Specchietto audio zona passeggeri

La funzione audio mirror consente ai passeggeri di condividere l'audio. La funzione specchio duplica i dati audio in ciascuna zona audio in modo che tutti i passeggeri possano ascoltare lo stesso audio. In questo caso il focus audio viene condiviso con i passeggeri coinvolti nell'audio mirroring.

Instradamento dello specchio audio

È necessario un minimo di due passeggeri per abilitare il mirroring audio. Di conseguenza, una configurazione audio con solo due zone audio per i passeggeri richiederebbe un dispositivo di uscita mirror. Con la definizione di cui sopra, è possibile avviare due sessioni di mirroring simultanee.

La figura seguente mostra uno schema semplificato per il mirroring audio multizona tra due passeggeri. L'audio di entrambi i passeggeri viene instradato a un dispositivo mirror audio, bus_1000 . L'HAL audio duplica il segnale nelle zone sorgente.

Flusso di lavoro di configurazione della zona dinamica

Figura 6. Flusso di lavoro di configurazione della zona dinamica.

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

  • Il dispositivo di output multimediale per il passeggero è stato rimosso dall'elenco dei dispositivi.
  • Dispositivo di output mirror aggiunto all'elenco dei dispositivi.
  • I restanti dispositivi di uscita per la zona audio passeggeri rimangono nell'elenco dei dispositivi.

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

Flusso di lavoro dello specchio audio

Figura 7. Flusso di lavoro del mirroring audio.

Nella Figura 7, le API del gestore audio dell'auto per la gestione del mirroring audio vengono richiamate dal servizio Media System. Nello specifico, l'API per abilitare il mirroring audio per Utente 1 e Utente 2, CarAudioManager#enableMirrorForAudioZones .

Il servizio car audio configura l'instradamento audio per i passeggeri dell'utente come descritto sopra. Il servizio audio per auto invia anche un segnale all'HAL audio per configurare e duplicare l'audio dal dispositivo mirror alle zone corrispondenti.

Nell'immagine sopra, il servizio audio dell'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 è mostrato il segnale inviato tramite l'API AudioManager#setParameters , che raggiunge l'HAL tramite il servizio audio.

Disabilitando il mirroring audio, viene inviato il seguente segnale mirroring_src=bus_1000;mirroring=off . Questo segnale può essere utilizzato dall'HAL per disabilitare la duplicazione audio quando il mirroring audio non è abilitato. 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 frammento 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>