Avant de démarrer un flux logique, une application cible audio audio tels qu'ils sont utilisés pour le flux logique. L'application doit respecter la sélection de pertes de performance comme prévu dans les cas d'utilisation automobiles.
Bien que l'envoi d'une demande de focus soit recommandé, elle n'est pas appliquée par le système. Par conséquent, considérez la concentration comme un moyen de contrôler indirectement et d'éviter les conflits pendant la lecture au lieu de servir de mécanisme de contrôle audio principal. Le véhicule ne doit pas dépendre du système de sélection pour le fonctionnement du sous-système audio.
Ciblez les interactions
Pour prendre en charge AAOS, les requêtes de ciblage audio sont traitées en fonction
d'interactions entre le CarAudioContext
de la requête et celui
des cibles. Il existe trois types d'interactions:
- Exclusif
- Refuser
- Concurrent
Interaction exclusive
Il s'agit du modèle d'interaction le plus couramment utilisé avec Android.
Dans les interactions exclusives, une seule application peut être sélectionnée à la fois.
Par conséquent, une requête de ciblage entrante se voit accorder la priorité, tandis que la sélection existante
le détenteur du titre perd sa concentration. Étant donné que les deux applis lisent des contenus multimédias, une seule est autorisée à tenir
le focus. Par conséquent, la requête de focus de l'application nouvellement démarrée est renvoyée avec
Lorsque l'application lit de la musique, AUDIOFOCUS_REQUEST_GRANTED
reçoit une notification
événement de changement de focus avec un état de perte correspondant au type de requête
qui a été faite.
Refuser l'interaction
Avec les interactions reject, la requête entrante est toujours rejetée. Pour
par exemple lorsque vous essayez de lire de la musique alors qu'un appel est en cours. Dans ce
Dans ce cas, si l'application Téléphone est sélectionnée pour un appel et qu'une deuxième application demande la sélection
pour lire de la musique, l'application musicale reçoit AUDIOFOCUS_REQUEST_FAILED
en réponse
à la demande. Comme la requête de ciblage est refusée, aucune perte de ciblage n'est envoyée.
au conteneur de sélection actuel.
Interaction simultanée
Les interactions concurrentes sont propres à AAOS. Ainsi, les applis qui demandent du son dans la voiture : possibilité de le conserver en même temps que d'autres applications. Pour une une interaction simultanée, les conditions suivantes doivent être remplies. La
La demande de sélection entrante doit demander AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
Le conteneur de sélection actuel ne setPauseWhenDucked(true)
Le responsable de la sélection actuel choisit de ne pas recevoir d'événements de canard
Si ces critères sont remplis, la demande de ciblage est renvoyée avec
AUDIOFOCUS_REQUEST_GRANTED
alors que le conteneur de sélection actuel n'a pas changé de
le focus. En revanche, si le responsable de la sélection active les événements "Duck" ou
s'interrompt lorsqu'il est abaissé, le conteneur de la sélection n'est plus au premier plan, comme c'est le cas avec
une interaction exclusive.
Gérer les flux simultanés
Bien que l'interaction simultanée ait de nombreuses utilisations, faites attention à la combinaison et
au niveau matériel sur
les périphériques de sortie. Nous vous recommandons vivement
Les éléments CarAudioContext
autorisés à être lus simultanément doivent être routés vers
différents périphériques de sortie.
Le fait d'avoir des périphériques de sortie distincts pour les flux simultanés permet au HAL pour écarter l'un des flux avant de les mélanger ou pour acheminer les flux physiques aux différents haut-parleurs du véhicule. Si les flux logiques sont mélangés Android, les gains ne sont pas modifiés et sont livrés dans le même flux physique.
Par exemple, lorsque la navigation et le contenu multimédia sont fournis simultanément, le gain du flux multimédia peuvent être temporairement réduits les instructions de navigation sont plus claires. Le menu de navigation le flux peut être acheminé vers les enceintes côté conducteur pendant que le contenu multimédia jouer dans le reste de la cabane.
Matrice d'interaction
Le tableau ci-dessous présente la matrice d'interaction telle que définie par CarAudioService
.
Chaque ligne représente l'élément CarAudioContext
du responsable actuel, et chaque ligne
représente celle de la requête entrante.
Par exemple, lorsqu'une application multimédia musicale s'active pendant qu'une application de navigation demande la matrice indique que les deux interactions peuvent se jouer simultanément en supposant que les autres critères interactions simultanées sont remplies.
En raison des interactions simultanées, il est possible d'avoir plusieurs conteneur de sélection. Dans ce cas, une requête de sélection entrante est comparée à chacun des les détenteurs de l’attention actuelles avant de déterminer quelle interaction appliquer. Dans ce l'interaction la plus prudente l'emporte. Refuser, puis exclure et et enfin simultanés.
Figure 1 : Matrice d'interaction avec focus audio.
Navigation pendant les appels téléphoniques
Dans Android 11, un nouveau paramètre a été introduit pour permettre aux utilisateurs de modifier le
comportement d'interaction entre la navigation et les appels téléphoniques. Une fois définie,
android.car.KEY_AUDIO_FOCUS_NAVIGATION_REJECTED_DURING_CALL
modifie le
interaction entre les requêtes de sélection NAVIGATION
entrantes et les CALL
actuelles
des conteneurs de focus, de concurrents à rejets. Si un utilisateur
préfère que
instructions de navigation n'interrompent pas un appel, il peut activer le paramètre. Ce
est conservée pour l'utilisateur et peut être définie de manière dynamique afin que
respectent le nouveau paramètre.
Priorité audio différée
Dans Android 11, AAOS permet de demander la priorité audio retardable. Ce permet de retarder les requêtes de focus non temporaires lorsque leur interaction avec qui entraînent leur refus. Une fois qu'un dans un état où la requête différée peut se concentrer, si la demande est acceptée.
Règles pour les requêtes de priorité audio différée
Uniquement pour les requêtes non temporaires. Une requête différée ne peut être effectuée que pour sources non temporaires afin d'éviter les sons temporaires pendant la lecture après qu'elles sont pertinentes.
Une seule requête peut être retardée à la fois. Si une demande retardée est effectuée alors qu'il y a déjà une requête retardée, la requête retardée initiale reçoit un événement de modification
AUDIOFOCUS_LOSS
et la nouvelle requête reçoit une réponse synchrone deAUDIOFOCUS_REQUEST_DELAYED
.Les requêtes retardables doivent avoir un
OnAudioFocusChangeListener
. Une fois est retardée, l'écouteur est utilisé pour avertir le demandeur lorsque est finalement accordée (AUDIOFOCUS_GAIN
), ou si elle est refusée ultérieurement (AUDIOFOCUS_LOSS
).
Demander une sélection différée
Pour créer une requête pouvant être retardée:
Utilisez
AudioFocusRequest.Builder#setAcceptsDelayedFocusGain
.mMediaWithDelayedFocusListener = new MediaWithDelayedFocusListener(); mDelayedFocusRequest = new AudioFocusRequest .Builder(AudioManager.AUDIOFOCUS_GAIN) .setAudioAttributes(mMusicAudioAttrib) .setOnAudioFocusChangeListener(mMediaWithDelayedFocusListener) .setForceDucking(false) .setWillPauseWhenDucked(false) .setAcceptsDelayedFocusGain(true) .build();
Lorsque vous envoyez la requête, gérez la réponse
AUDIOFOCUS_REQUEST_DELAYED
:int delayedFocusRequestResults = mAudioManager.requestAudioFocus(mDelayedFocusRequest); if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { // start audio playback return; } if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_DELAYED) { // audio playback delayed to audio focus listener return; }
Lorsque la requête est retardée, l'écouteur de focus gère les changements dans le focus:
private final class MediaWithDelayedFocusListener implements OnAudioFocusChangeListener { @Override public void onAudioFocusChange(int focusChange) { synchronized (mLock) { switch (focusChange) { case AudioManager.AUDIOFOCUS_GAIN: … // Start focus playback case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: … // Pause media transiently case AudioManager.AUDIOFOCUS_LOSS: … // Stop media
Gestion de la mise au point multizone
Pour les véhicules avec plusieurs zones audio, la priorité audio est gérée indépendamment pour chaque zone. Ainsi, une requête adressée à une zone ne prend pas en compte maintient l'attention dans d'autres zones et n'entraîne pas de blocage vous n'êtes plus au premier plan. Ainsi, l'objectif de la cabine principale peut être géré séparément d'un système de divertissement au niveau du siège arrière, de manière à ne pas interrompre la lecture audio dans une zone en fonction des modifications apportées à une autre zone.
Pour toutes les applications, CarAudioService
gère automatiquement la sélection. Un objectif
la zone audio de la requête est déterminée par la classe UserId
ou UID
associée
(pour en savoir plus, consultez Routage audio).
Demander le contenu audio de plusieurs zones simultanément
Si une application souhaite lire du contenu audio dans plusieurs zones simultanément, elle doit demander
pour chaque zone en incluant AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID
dans
bundle:
//Create attribute with bundle and AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID
Bundle bundle = new Bundle();
bundle.putInt(CarAudioManager.AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID,
zoneId);
AudioAttributes attributesWithZone = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.addBundle(bundle)
.build();
//Create focus request using built attributesWithZone
Ce paramètre de bundle permet au demandeur de remplacer la zone audio automatique pour utiliser à la place l'ID de zone spécifié. Par conséquent, une application peut générer des requêtes distinctes pour différentes zones audio.
Priorité audio HAL
À partir d'Android 11, le HAL est activé pour demander la sélection au nom de flux externes. Bien que facultative, leur utilisation est vivement recommandée pour permettent aux sons extérieurs de participer de façon optimale à l'écosystème Android et pour offrir une expérience utilisateur fluide.
Le HAL détermine en définitive les sons à privilégier. Dans ce cas, les sons d'urgence et de sécurité critiques doivent être émis indépendamment si le HAL dispose ou non d'une priorité audio et doit continuer à être soit lue correctement, même si le HAL n'est plus au premier plan audio. Il en va de même pour l'ensemble des sons requis par la réglementation gouvernementale.
Le HAL doit couper le son des flux Android de manière proactive lors de la lecture, le cas échéant. les sons d'urgence ou critiques pour la sécurité, afin de les entendre clairement.
AudioControl@2.0
La version 2.0 d'AudioControl HAL introduit les nouvelles API suivantes:
API | Objectif |
---|---|
IAudioControl#registerFocusListener |
Enregistre une instance de IFocusListener avec le paramètre
AudioControl HAL. Cet écouteur permet au HAL de demander et d'abandonner l'audio
le focus. Le HAl fournit une instance ICloseHandle à utiliser par
Android pour annuler l'enregistrement de l'écouteur. |
IAudioControl#onAudioFocusChange |
Informe le HAL des changements d'état des demandes de ciblage effectuées par le HAL
via IFocusListener , y compris les réponses aux requêtes initiales
et les requêtes de focus. |
IFocusListener#requestAudioFocus
| Les requêtes se concentrent au nom du HAL pour une utilisation spécifiée, un ID de zone et le type de gain de focalisation. |
IFocusListener#abandonAudioFocus |
Abandonne les requêtes de ciblage HAL existantes pour l'utilisation et la zone spécifiées Identifiant |
Le HAL peut avoir plusieurs demandes de ciblage en même temps, mais une seule demande est autorisée. par utilisation et par association d'ID de zone. Android suppose que le HAL est immédiatement commence à émettre des sons pour une utilisation après l'envoi de la requête et continue à jusqu'à ce qu'il quitte le focus.
À l'exception de registerFocusListener
, ces requêtes sont oneway
pour garantir que
Android ne retarde pas le HAL pendant le traitement d'une requête de focus. Le HAL doit
n'attendez pas pour vous concentrer avant d'écouter des sons essentiels pour votre sécurité. (facultatif)
pour que le HAL écoute les changements de priorité audio et y répond
IAudioControl#onAudioFocusChange
Service de focalisation audio pour voiture OEM
Dans Android 14, AAOS a lancé les services de plug-ins OEM pour voitures afin de permettre la configurabilité de certains composants de la voiture. Pour Car Audio Plugin Service, le plug-in permet aux OEM de gérer les requêtes de focus interceptées par le système audio Google Cloud. Les OEM disposent ainsi de plus de flexibilité pour gérer la concentration selon les besoins. par des règles et des réglementations. Par conséquent, l'interaction de ciblage audio peut différer entre fabricants, et d'une région à l'autre. Principes de base de la priorité audio maintient, que les applications doivent quand même demander le focus pour une meilleure gestion du son pour améliorer l'expérience utilisateur. En général, certaines règles s'appliquent demande de focus par les applications:
Sans priorité audio élevée (comme un appel téléphonique, alerte d'urgence ou notification de sécurité) les applications doivent pouvoir accéder au son de manière temporaire ou permanente.
Lorsqu'un ciblage multimédia est actif:
Les applications demandant la priorité à l'utilisation des appels doivent pouvoir recevoir l'appel : simultanément ou exclusivement.
Les applis qui demandent la priorité à l'utilisation de la navigation devraient pouvoir recevoir la navigation. se concentrer simultanément ou exclusivement.
Les applis qui demandent une priorité à l'utilisation de l'Assistant devraient pouvoir recevoir ce type de priorité simultanément ou exclusivement.
Lorsque vous vous trouvez dans un environnement audio de haute priorité (y compris lors d'un appel téléphonique, alerte d'urgence ou notification de sécurité), les applications la requête de priorité audio différée doit être acceptée ou retardée selon les besoins.
Bien que les suggestions ci-dessus ne soient pas exhaustives, elles peuvent aider les applications qui demandent sélectionner pour se concentrer s'il n'y a pas de sons actifs à priorité élevée. Même à un niveau élevé sons prioritaires sont actifs, les demandes de mise au point différée doivent toujours être respectées Vous devriez pouvoir vous concentrer lorsque le son à priorité élevée s'arrête.