Aperçu

Android Automotive OS (AAOS) s'appuie sur la pile audio Android de base pour prendre en charge les cas d'utilisation en tant que système d'infoloisirs dans un véhicule. AAOS est responsable des sons d'infodivertissement (c'est-à-dire les sons multimédias, de navigation et de communication), mais n'est pas directement responsable des carillons et des avertissements qui ont des exigences strictes en termes de disponibilité et de timing.

Bien qu'AAOS fournisse des signaux et des mécanismes pour aider le véhicule à gérer l'audio, c'est en fin de compte au véhicule de décider quels sons doivent être diffusés pour le conducteur et les passagers, en veillant à ce que les sons critiques pour la sécurité et les sons réglementaires soient correctement entendus sans interruption.

Étant donné qu'AAOS utilise la pile audio Android, les applications tierces qui lisent du contenu audio n'ont pas besoin de faire quoi que ce soit de différent par rapport à ce qu'elles feraient sur un téléphone. Le routage audio de l'application est automatiquement géré par AAOS, comme décrit dans la section Configuration des règles audio.

Étant donné qu'Android gère l'expérience multimédia du véhicule, les sources multimédias externes telles que le tuner radio doivent être représentées par des applications, qui peuvent gérer la priorité audio et les événements de touches multimédias pour la source.

Sons et flux Android

Les systèmes audio automobiles gèrent les sons et flux suivants :

image

Figure 1 : Diagramme de l'architecture axée sur les flux.

Android gère les sons provenant des applications Android, en les contrôlant et en les acheminant vers les périphériques de sortie au niveau de la couche d'abstraction matérielle (HAL) en fonction du type de son :

  • Les flux logiques, appelés sources dans la nomenclature audio de base, sont associés à des attributs audio.

  • Les flux physiques, appelés appareils dans la nomenclature audio de base, ne contiennent aucune information contextuelle après le mixage.

Pour plus de fiabilité, les sons externes (provenant de sources indépendantes, telles que les carillons d'avertissement de ceinture de sécurité) sont gérés en dehors d'Android, en dessous de la HAL ou même dans un matériel distinct. Les implémenteurs système doivent fournir un mixeur qui accepte un ou plusieurs flux d'entrée audio d'Android, puis les combine de manière appropriée avec les sources audio externes requises par le véhicule. Le HAL de contrôle Android fournit un mécanisme différent pour que les sons générés en dehors d'Android communiquent avec Android :

  • Demande de priorité audio
  • Limites de gain ou de volume
  • Modifications du gain et du volume

L'implémentation de la couche HAL audio et le mixeur externe sont chargés de s'assurer que les sons externes critiques pour la sécurité sont entendus, de mixer les flux fournis par Android et de les acheminer vers les haut-parleurs appropriés.

Sons Android

Les applications peuvent comporter un ou plusieurs lecteurs qui interagissent via les API Android standards (par exemple, AudioManager pour le contrôle de la mise au point ou MediaPlayer pour le streaming) afin d'émettre un ou plusieurs flux logiques de données audio. Ces données peuvent être mono à canal unique ou surround 7.1, mais elles sont routées et traitées comme une source unique. Le flux d'application est associé à des AudioAttributes qui donnent au système des indications sur la façon dont l'audio doit être exprimé.

Les flux logiques sont envoyés via AudioService et acheminés vers l'un (et un seul) des flux de sortie physiques disponibles, chacun étant la sortie d'un mixeur dans AudioFlinger. Une fois les attributs audio mixés dans un flux physique, ils ne sont plus disponibles.

Chaque flux physique est ensuite transmis à la couche HAL audio pour être rendu sur le matériel. Dans les applications automobiles, le matériel de rendu peut être constitué de codecs locaux (comme sur les appareils mobiles) ou d'un processeur distant sur le réseau physique du véhicule. Dans les deux cas, l'implémentation Audio HAL est chargée de fournir les données d'échantillon réelles et de les rendre audibles.

Flux externes

Les flux audio qui ne doivent pas être routés via Android (pour des raisons de certification ou de timing) peuvent être envoyés directement à la table de mixage externe. Depuis Android 11, la HAL peut désormais demander le focus pour ces sons externes afin d'informer Android et de lui permettre de prendre les mesures appropriées, comme mettre en pause le contenu multimédia ou empêcher d'autres applications d'obtenir le focus.

Si les flux externes sont des sources multimédias qui doivent interagir avec l'environnement sonore généré par Android (par exemple, arrêter la lecture MP3 lorsqu'un tuner externe est activé), ces flux externes doivent être représentés par une application Android. Une telle application demanderait la priorité audio au nom de la source multimédia au lieu de la HAL, et répondrait aux notifications de priorité en démarrant et en arrêtant la source externe si nécessaire pour s'adapter à la stratégie de priorité Android.

L'application est également responsable de la gestion des événements de touches multimédias, comme la lecture et la pause. HwAudioSource est un mécanisme suggéré pour contrôler ces appareils externes. Pour en savoir plus, consultez Connecter un périphérique d'entrée dans AAOS.

Périphériques de sortie

Au niveau de la couche HAL audio, le type d'appareil AUDIO_DEVICE_OUT_BUS fournit un périphérique de sortie générique à utiliser dans les systèmes audio des véhicules. Le périphérique de bus est compatible avec les ports adressables (où chaque port est le point de terminaison d'un flux physique) et devrait être le seul type de périphérique de sortie compatible dans un véhicule.

Une implémentation système peut utiliser un port de bus pour tous les sons Android. Dans ce cas, Android mélange tout et le fournit sous forme d'un seul flux. Le HAL peut également fournir un port de bus pour chaque CarAudioContext afin de permettre la diffusion simultanée de tout type de son. Cela permet à l'implémentation HAL de mixer et de baisser le volume des différents sons comme souhaité.

L'attribution de contextes audio aux périphériques de sortie s'effectue via le fichier car_audio_configuration.xml. Pour en savoir plus, consultez Configuration des règles audio.