In Android 10, car_audio_configuration.xml
è stato sostituito
car_volumes_groups.xml
e IAudioControl.getBusForContext
. Il criterio relativo all'audio
di solito contenuti nella partizione del fornitore, rappresentano l'hardware audio
configurazione della lavagna. Tutti i dispositivi a cui viene fatto riferimento in
car_audio_configuration.xml
deve essere definito in
audio_policy_configuration.xml
.
La figura 1 di seguito illustra una panoramica generale del servizio audio per auto. in cui il servizio audio dell'auto legge la configurazione dell'audio dell'auto. per configurare l'audio per il dispositivo.
Figura 1. Panoramica dell'architettura audio dell'auto.
Inserisci il file di configurazione dell'audio dell'auto in vendor\etc\
oppure
system\etc\
sul dispositivo, con vendor\etc\
essere il primo luogo in cui il servizio audio dell'auto cerca il file. L'auto
servizi audio legge car_audio_configuration.xml
per determinare l'audio
configurazione.
Zone audio dell'auto:
- Ogni zona audio contiene un ID zona audio univoco.
- Ogni zona audio può essere mappata a una zona degli occupanti.
Le azioni audio in ogni zona sono indipendenti l'una dall'altra:
- Focus audio
- Routing dell'audio
- Attenuazione automatica audio
Gruppi volume auto:
Tutti i dispositivi audio che contengono un gruppo di volume vengono controllati insieme con le stesse variazioni di guadagno. La configurazione del guadagno audio per tutti i dispositivi di un gruppo dovrebbero essere uguali.
Mappatura del contesto audio alla mappatura dei dispositivi audio. Usalo per creare un audio che associa gli utilizzi audio a un dispositivo di output.
Tutti i contesti audio devono essere rappresentati all'interno di una zona. Ciò consente per impostare in modo preciso il routing audio per tutti gli utilizzi degli attributi audio.
Contesto audio
Per semplificare la configurazione dell'audio AAOS, sono stati raggruppati gli utilizzi simili
in CarAudioContexts
. Questi contesti audio vengono utilizzati
CarAudioService
per definire routing, gruppi di volume, messa a fuoco audio e Attenuazione automatica
gestione dei dispositivi. I contesti audio statici presenti nel file AAOS sono elencati di seguito.
Questa tabella descrive la mappatura tra i contesti e gli utilizzi audio. In evidenza vengono fornite righe per un nuovo utilizzo da parte del sistema.
Contesto audioauto | Attributi associati associati |
---|---|
MUSICA | UNKNOWN GAME |
NAVIGAZIONE | ASSISTANCE_NAVIGATION_GUIDANCE |
COMANDO_VOCE | ASSISTANT |
CHIAMA_RING | NOTIFICATION_RINGTONE |
CHIAMA | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
SVEGLIA | ALARM |
NOTIFICA | NOTIFICATION NOTIFICATION_* |
SYSTEM_AUDIO | ASSISTANCE_SONIFICATION |
EMERGENZA | EMERGENCY |
SICUREZZA | SAFETY |
STATO_VEICOLO | VEHICLE_STATUS |
ANNUNCIO | ANNOUNCEMENT |
Attiva routing AAOS
Per utilizzare il routing basato su AAOS, devi impostare il flag audioUseDynamicRouting
su
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Quando false
, il routing e gran parte di CarAudioService
è disattivato e il valore AAOS diminuisce
al comportamento predefinito di AudioService
.
Zona principale
Per impostazione predefinita, tutto l'audio viene indirizzato alla zona principale. Solo una zona principale
, che è indicato nella configurazione dall'attributo
isPrimary="true"
. Alla zona principale viene automaticamente assegnato
Audiomanager.PRIMARY_AUDIO_ZONE
.
Configurazione di esempio (versione 2)
Ad esempio, un veicolo può avere due zone: una principale e un sedile posteriore.
un sistema di intrattenimento basato su cloud. In questo scenario, puoi progettare una possibile
car_audio_configuration.xml
versione 2 come segue:
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="music"/>
<context context="announcement"/>
</device>
<device address="bus3_call_ring_out">
<context context="call_ring"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
<group>
<device address="bus1_navigation_out">
<context context="navigation"/>
</device>
<device address="bus2_voice_command_out">
<context context="voice_command"/>
</device>
</group>
<group>
<device address="bus4_call_out">
<context context="call"/>
</device>
</group>
<group>
<device address="bus5_alarm_out">
<context context="alarm"/>
</device>
</group>
<group>
<device address="bus7_system_sound_out">
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
</device>
</group>
</volumeGroups>
</zone>
<zone name="rear seat zone" audioZoneId="1">
<volumeGroups>
<group>
<device address="bus100_rear_seat">
<context context="music"/>
<context context="navigation"/>
<context context="voice_command"/>
<context context="call_ring"/>
<context context="call"/>
<context context="alarm"/>
<context context="notification"/>
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
<context context="announcement"/>
</device>
</group>
</volumeGroups>
</zones>
</audioZoneConfiguration>
In questo esempio, la zona principale separa alcuni contesti audio
su dispositivi diversi. Ciò consente all'HAL di applicare diverse applicazioni di post-elaborazione
e mescolare l'output su ciascun dispositivo utilizzando l'hardware del veicolo.
I dispositivi sono stati organizzati in diversi gruppi di volumi: contenuti multimediali, navigazione,
chiamate, sveglie e suoni di sistema. Se il sistema è configurato
useFixedVolume
, i livelli di volume di ciascun gruppo vengono trasmessi all'HAL
da applicare all'output di questi dispositivi.
Per la zona principale, consigliamo che i suoni dell'impianto siano separati dagli altri i suoni. In questo modo i suoni del veicolo vengono trattati con una priorità più elevata. Il servizio audio dell'auto già distingue i suoni dei veicoli nelle e la gestione dell'attenuazione automatica. Ad esempio, un avviso per i suoni di emergenza ha una priorità maggiore rispetto a un'altra richiesta di impostazione dello stato attivo.
Per semplificare le cose, nell'esempio della zona secondaria tutti i contesti audio vengono con un unico dispositivo e un gruppo di volumi.
Configurazione audio della zona degli occupanti
In Android 11, car_audio_configuration.xml
ha introdotto
due nuovi campi, audioZoneId
e occupantZoneId
. Puoi usare audioZoneId
per controllare la gestione delle zone audio. Puoi utilizzare occupantZoneId
per configurare
il routing basato sull'ID utente.
Riesaminare la configurazione audio precedente, ma utilizzare il nuovo campo per ID zona degli occupanti e mappatura ID zona audio, la nuova configurazione senza le definizioni dei gruppi di volume possono essere impostate come segue.
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
...
</zone>
<zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
...
</zone>
</zones>
</audioZoneConfiguration>
La configurazione precedente definisce una mappatura della zona principale alla zona degli occupanti 0
e da audioZoneId
1 a occupantZoneId
1. In generale, qualsiasi mappatura tra
è possibile configurare la zona degli occupanti e la zona audio. Tuttavia, il mapping deve essere
uno a uno. Le regole che hanno definito i due nuovi campi sono elencate di seguito.
audioZoneId
per la zona principale è semprePRIMARY_AUDIO_ZONE
ID. SeisPrimary="true"
è definito, quindiaudioZoneId
non è necessario.I numeri
audioZoneId
eoccupantZoneId
non possono essere ripetuti.audioZoneId
eoccupantZoneId
possono avere una sola mappatura one-to-one.
Configurazione dell'audio dell'auto Android 14
In Android 14, AAOS ha introdotto il servizio di plug-in OEM, che ti consente di gestire più attivamente il comportamento audio controllato dall'auto servizio audio. Insieme ai nuovi servizi plug-in, vengono apportate le seguenti modifiche aggiunto al file di configurazione dell'audio dell'auto:
- Contesto audio auto definito dall'OEM
- Configurazioni dinamiche non principali
Contesto per audio dell'auto definito dall'OEM
Per attivare una configurazione audio flessibile, in Android
14, il servizio audio per auto consente di utilizzare l'audio
raggruppati in modo diverso rispetto ai contesti audio statici definiti sopra.
Questo contesto definito dall'OEM può essere definito nel car_audio_configuration.xml
alla versione 3 del file.
Vengono invece utilizzati i contesti audio statici attualmente definiti. Informazioni generali del contesto audio per auto definito dall'OEM è mostrato di seguito.
Ciascun contesto OEM richiede un name
e un elenco di attributi audio
di utilizzo assegnate al contesto. Nell'esempio precedente, due contesti sono
definita:
<carAudioConfiguration version="3">
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
- Il contesto
media
contieneAUDIO_USAGE_MEDIA
eAUDIO_USAGE_UNKNOWN
- Il contesto
game
contiene soloAUDIO_USAGE_GAME
Il contesto deve essere definito nella parte superiore di car_audio_configuration.xml
. Quando sono definiti i contesti OEM, il resto della configurazione dell'audio dell'auto
può procedere come prima. Al contesto dell'audio dell'auto si applicano le seguenti regole:
Le definizioni del contesto dell'OEM sono facoltative. Il contesto audio statico al suo posto.
Non ripetere i nomi dei contesti.
Non assegnare l'utilizzo degli attributi audio a più contesti.
Tutti gli utilizzi audio definiti in
AudioAttributes
devono essere usati per creare contesto.
In sostanza, il android.audio.policy.configuration.V7_0.AudioUsage
una rappresentazione stringa dell'utilizzo audio deve essere utilizzata per il contesto audio dell'OEM
definizione di Kubernetes. In futuro, gli utilizzi più recenti degli attributi audio verranno assegnati alla
contesto più appropriato per ridurre gli errori durante la migrazione da un dispositivo Android
a un'altra versione.
Il contesto definito dall'OEM è stato introdotto per espandere ulteriormente il plug-in OEM servizio audio, può essere utilizzato anche senza il servizio di plug-in OEM. L'audio è simile a quello del servizio audio statico:
Interazioni con focus audio. L'attributo audio viene utilizzato per determinare la migliore comportamento corrispondente impostato dalla matrice di interazione del focus audio. Per per i dettagli, consulta Audio focus.
L'attributo audio per il controllo del volume dell'audio viene utilizzato per determinare la corrispondenza migliore:
- Gruppo di volumi basato sul contesto definito dall'OEM.
- Priorità dall'elenco di volumi statici configurato.
Comportamento Attenuazione automatica audio:
L'utilizzo degli attributi audio per l'elemento attivo audio corrente viene usato per la mappatura al le informazioni del dispositivo audio in uscita come definito nella configurazione dell'audio dell'auto .
L'attributo audio viene utilizzato per mappare il contesto statico corrispondente a Anatra, in base alla matrice statica di attenuazione automatica audio.
Configurazioni dinamiche delle zone audio
In Android 14, per adattare le zone audio dinamiche configurazione, lo schema di configurazione dell'audio dell'auto per definire le zone audio è aggiornato alla versione 3. Il nuovo schema richiede l'impostazione di una configurazione per ogni zona.
<carAudioConfiguration version="3">
<!-- optional OEM context -->
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
</oemContexts>
<zones>
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="primary zone config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="media"/>
<context context="game"/>
<context context="announcement"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
...
</zoneConfigs>
</zone
</zones>
Per saperne di più, consulta il file di versione 3 definito in
device/generic/car/emulator/audio/car_audio_configuration.xml
. A partire da
Android 14, la zona principale può avere un solo (1)
configurazione. Le zone non principali possono avere più configurazioni. Le seguenti
alle configurazioni dell'audio dell'auto:
La zona audio principale può avere una sola configurazione.
Le zone audio non principali possono avere più configurazioni.
Il nome deve essere univoco per ogni zona e configurazione di zona audio.
All'interno di una zona audio, le configurazioni audio possono variare:
- La configurazione dei gruppi di volumi non deve essere la stessa.
- L'assegnazione del contesto audio non deve essere la stessa.
I nomi dei dispositivi di output audio devono essere univoci tra le zone o le configurazioni. R il nome del dispositivo deve apparire solo una volta in una configurazione audio o in una zona.
I dispositivi audio appartenenti allo stesso gruppo di volume devono avere lo stesso audio configurazioni del guadagno.
Devi assegnare tutti i contesti audio (OEM o statici) per ogni audio configurazione.
Compatibilità con l'inoltro
Anche se le nuove versioni di car_audio_configuration.xml
introducono nuove
in ogni aggiornamento, puoi continuare a usare i file meno recenti nelle versioni più recenti
Sistema operativo Android Automotive. Gli OEM che eseguono l'aggiornamento alle nuove versioni di Android possono riutilizzare gli
car_audio_configuration.xml
.
Per utilizzare una nuova funzione che richiede nuove informazioni contenute nel
car_audio_configuration.xml
, la versione deve essere aggiornata. Stai tentando di utilizzare
Una versione precedente di un file con informazioni non supportate in quella versione del file
genera un IllegalStateException
quando viene avviato il servizio auto. L'eccezione
contiene le informazioni pertinenti su quali informazioni vengono utilizzate
la versione minima richiesta.