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 médias, la navigation et les communications), mais n'est pas directement responsable des sonneries et des avertissements qui ont des exigences strictes en termes de disponibilité et de synchronisation.
Bien que l'AAOS fournisse des signaux et des mécanismes pour aider le véhicule à gérer l'audio, c'est finalement le véhicule qui décide des sons à diffuser 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 d'effectuer d'action différente de celle des téléphones. Le routage audio de l'application est automatiquement géré par AAOS, comme décrit dans la section Configuration des règles 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 sélection audio et les événements de touche multimédia pour la source.
Sons et flux Android
Les systèmes audio automobiles gèrent les sons et les flux suivants:
Figure 1 : Schéma de l'architecture axée sur les flux.
Android gère les sons provenant des applications Android, en contrôlant ces applications et en acheminant leurs sons vers les périphériques de sortie dans la HAL en fonction du type de son:
Les flux logiques, appelés sources dans la nomenclature audio de base, sont tagués avec des attributs audio.
Les flux physiques, appelés appareils dans la nomenclature audio principale, ne comportent aucune information de contexte après le mixage.
Pour plus de fiabilité, les sons externes (provenant de sources indépendantes, telles que les sonneries d'avertissement de ceinture de sécurité) sont gérés en dehors d'Android, en dessous du HAL ou même dans du matériel distinct. Les implémentateurs système doivent fournir un mélangeur qui accepte un ou plusieurs flux d'entrée audio à partir d'Android, puis combine ces flux 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 puissent communiquer avec Android:
- Demande de priorité audio
- Limites de gain ou de volume
- Modifications du gain et du volume
L'implémentation du 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 à un seul canal ou surround 7.1, mais elles sont acheminées et traitées comme une seule source. Le flux de l'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 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 HAL audio pour le rendu sur le matériel. Dans les applications automobiles, le matériel de rendu peut être des codecs locaux (comme sur les appareils mobiles) ou un processeur distant sur le réseau physique du véhicule. Dans tous les cas, l'implémentation de l'HAL audio a pour fonction de fournir les données d'échantillon réelles et de les rendre audibles.
Flux externes
Les flux audio qui ne doivent pas être acheminés via Android (pour des raisons de certification ou de synchronisation) peuvent être envoyés directement au mélangeur externe. Depuis Android 11, le HAL peut désormais demander la sélection de ces sons externes pour informer Android afin qu'il puisse prendre les mesures appropriées, comme suspendre les contenus multimédias ou empêcher d'autres éléments de gagner la sélection.
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 plutôt qu'au nom du 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 touche multimédia tels que la lecture et la mise en pause. HwAudioSource
est un mécanisme suggéré pour contrôler ces appareils externes. Pour en savoir plus, consultez la section Connecter un appareil d'entrée dans AAOS.
Périphériques de sortie
Au niveau du 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. L'appareil de bus accepte les ports adressables (où chaque port est le point de terminaison d'un flux physique) et est censé être le seul type d'appareil de sortie compatible dans un véhicule.
Une implémentation système peut utiliser un port de bus pour tous les sons Android, auquel cas Android mélange tout et le transmet sous forme de flux. Le HAL peut également 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 de réduire les différents sons comme vous le souhaitez.
L'attribution de contextes audio aux périphériques de sortie se fait via le fichier car_audio_configuration.xml
. Pour en savoir plus, consultez la section Configuration des règles audio.