Vue d'ensemble

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

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

Étant donné qu'AAOS exploite la pile audio Android, les applications tierces lisant de l'audio n'ont pas besoin de faire quelque chose de différent de ce qu'elles feraient dans les téléphones. Le routage audio de l'application est automatiquement géré par AAOS comme décrit dans Configuration de la politique audio .

Comme 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 mise au point audio et les événements clés multimédia pour la source.

Sons et flux Android

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

image

Figure 1. Diagramme d'architecture centré sur le flux.

Android gère les sons provenant des applications Android, contrôle ces applications et achemine leurs sons vers les périphériques de sortie du HAL en fonction du type de son :

  • Les flux logiques , appelés sources dans la nomenclature audio principale, sont étiquetés avec des attributs Audio .

  • Les flux physiques , appelés périphériques dans la nomenclature audio principale, n'ont aucune information contextuelle après le mixage.

Pour des raisons 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, sous le HAL ou même dans un matériel séparé. Les responsables de la mise en œuvre du système doivent fournir un mélangeur qui accepte un ou plusieurs flux sonores provenant d'Android, puis combine ces flux de manière appropriée avec les sources sonores externes requises par le véhicule. Android Control HAL fournit un mécanisme différent pour que les sons générés en dehors d'Android communiquent avec Android :

  • Demande de focus audio
  • Limites de gain ou de volume
  • Modifications du gain et du volume

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

Sons Android

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

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

Chaque flux physique est ensuite transmis au Audio HAL pour un rendu sur le matériel. Dans les applications automobiles, le matériel de rendu peut être constitué de codecs locaux (similaires aux appareils mobiles) ou d'un processeur distant sur le réseau physique du véhicule. Quoi qu'il en soit, c'est le travail de l'implémentation Audio HAL de fournir les échantillons de données réels et de les rendre audibles.

Flux externes

Les flux sonores qui ne doivent pas être acheminés via Android (pour des raisons de certification ou de timing) peuvent être envoyés directement au mixeur externe. Depuis Android 11, HAL est désormais en mesure de demander le focus sur ces sons externes afin d'informer Android afin qu'il puisse prendre les mesures appropriées telles que mettre le média en pause ou empêcher les autres de se concentrer.

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 le focus audio au nom de la source multimédia au lieu du HAL, et répondrait aux notifications de focus en démarrant et en arrêtant la source externe si nécessaire pour s'adapter à la politique de focus Android.

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

Des dispositifs de sortie

Au niveau Audio HAL, le type de périphérique 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 prend en charge les ports adressables (où chaque port est le point final d'un flux physique) et devrait être le seul type de périphérique de sortie pris en charge dans un véhicule.

Une implémentation de système peut utiliser un port de bus pour tous les sons Android, auquel cas Android mélange le tout et le diffuse sous la forme d'un seul flux. Alternativement, le HAL peut fournir un port de bus pour chaque CarAudioContext afin de permettre la diffusion simultanée de n'importe quel type de son. Cela permet à l'implémentation HAL de mélanger et d'atténuer les différents sons comme vous le souhaitez.

L'affectation des contextes audio aux périphériques de sortie se fait via le fichier car_audio_configuration.xml . Pour en savoir plus, consultez Configuration de la stratégie audio .