Android Automotive OS (AAOS) basiert auf dem Android-Audiostack, um die Anwendungsfälle für die Nutzung als Infotainmentsystem in einem Fahrzeug zu unterstützen. AAOS ist für Infotainment-Töne (Medien, Navigation und Kommunikation) verantwortlich, aber nicht direkt für Glockentöne und Warnungen, die strenge Verfügbarkeits- und Zeitanforderungen haben.
AAOS bietet Signale und Mechanismen, die dem Fahrzeug bei der Verwaltung von Audioinhalten helfen. Letztendlich entscheidet das Fahrzeug jedoch, welche Töne für den Fahrer und die Passagiere abgespielt werden sollen, damit sicherheitsrelevante und rechtliche Töne richtig und ohne Unterbrechung zu hören sind.
Da AAOS den Android-Audiostack nutzt, müssen Drittanbieteranwendungen, die Audio abspielen, nichts anderes tun als auf Smartphones. Das Audiorouting der Anwendung wird automatisch von AAOS verwaltet, wie unter Konfiguration der Audiorichtlinie beschrieben.
Da Android die Mediennutzung im Fahrzeug verwaltet, sollten externe Medienquellen wie der Radiotuner durch Apps dargestellt werden, die den Audiofokus und Medientastenereignisse für die Quelle verarbeiten können.
Android-Töne und ‑Streams
Audiosysteme in Fahrzeugen unterstützen die folgenden Töne und Streams:
Abbildung 1. Streamorientiertes Architekturdiagramm.
Android verwaltet die Töne von Android-Apps, steuert diese Apps und leitet ihre Töne je nach Art des Tons an Ausgabegeräte an der HAL weiter:
Logische Streams, die in der Audionomenklatur als Quellen bezeichnet werden, werden mit Audioattributen getaggt.
Physische Streams, die in der Kern-Audio-Nomenklatur als Geräte bezeichnet werden, haben nach dem Mischen keine Kontextinformationen.
Aus Gründen der Zuverlässigkeit werden externe Töne (von unabhängigen Quellen wie Sicherheitsgurtwarnungen) außerhalb von Android, unter der HAL oder sogar in separater Hardware verwaltet. Systemimplementierungen müssen einen Mischer bereitstellen, der einen oder mehrere Audioeingabestreams von Android akzeptiert und diese Streams dann auf geeignete Weise mit den für das Fahrzeug erforderlichen externen Tonquellen kombiniert. Die Android Control HAL bietet einen anderen Mechanismus, mit dem Töne, die außerhalb von Android generiert werden, mit Android kommunizieren können:
- Audiofokusanfrage
- Verstärkungs- oder Lautstärkeeinschränkungen
- Änderungen an Verstärkung und Lautstärke
Die Audio-HAL-Implementierung und der externe Mixer sind dafür verantwortlich, dass sicherheitskritische externe Geräusche zu hören sind, und für das Mischen der von Android bereitgestellten Streams und das Weiterleiten an geeignete Lautsprecher.
Android-Töne
Apps können einen oder mehrere Player haben, die über die standardmäßigen Android-APIs (z. B. AudioManager für die Fokussteuerung oder MediaPlayer für das Streaming) interagieren, um einen oder mehrere logische Streams von Audiodaten auszugeben. Diese Daten können einkanaliges Mono oder 7.1-Surround sein, werden aber als einzelne Quelle weitergeleitet und behandelt. Der App-Stream ist mit AudioAttributes verknüpft, die dem System Hinweise dazu geben, wie die Audiodaten ausgedrückt werden sollen.
Die logischen Streams werden über AudioService gesendet und an einen (und nur einen) der verfügbaren physischen Ausgabestreams weitergeleitet. Jeder dieser Streams ist die Ausgabe eines Mixers in AudioFlinger. Nachdem die Audioattribute in einen physischen Stream gemischt wurden, sind sie nicht mehr verfügbar.
Jeder physische Stream wird dann zum Rendern auf der Hardware an den Audio-HAL übergeben. In Automotive-Apps kann die Rendering-Hardware lokale Codecs (ähnlich wie bei Mobilgeräten) oder ein Remote-Prozessor über das physische Netzwerk des Fahrzeugs sein. In beiden Fällen ist es die Aufgabe der Audio-HAL-Implementierung, die tatsächlichen Beispieldaten zu liefern und dafür zu sorgen, dass sie hörbar werden.
Externe Streams
Audiostreams, die aus Zertifizierungs- oder Timinggründen nicht über Android geleitet werden sollten, können direkt an den externen Mixer gesendet werden. Ab Android 11 kann der HAL den Fokus für diese externen Töne anfordern, um Android zu informieren, damit entsprechende Maßnahmen ergriffen werden können, z. B. das Pausieren von Medien oder das Verhindern, dass andere den Fokus erhalten.
Wenn externe Streams Medienquellen sind, die mit der von Android generierten Audioumgebung interagieren sollen (z. B. die MP3-Wiedergabe beenden, wenn ein externer Tuner eingeschaltet ist), müssen diese externen Streams von einer Android-App repräsentiert werden. Eine solche App würde den Audiofokus im Namen der Medienquelle anstelle der HAL anfordern und auf Fokusbenachrichtigungen reagieren, indem sie die externe Quelle bei Bedarf startet und stoppt, um den Android-Fokusrichtlinien zu entsprechen.
Die App ist auch für die Verarbeitung von Medientastenereignissen wie „Wiedergabe“ und „Pause“ verantwortlich. Ein vorgeschlagener Mechanismus zur Steuerung solcher externer Geräte ist HwAudioSource
. Weitere Informationen finden Sie unter Eingabegerät in AAOS verbinden.
Ausgabegeräte
Auf der Audio-HAL-Ebene stellt der Gerätetyp AUDIO_DEVICE_OUT_BUS
ein generisches Ausgabegerät für die Verwendung in Fahrzeugaudiosystemen bereit. Das Busgerät unterstützt adressierbare Ports (bei denen jeder Port der Endpunkt für einen physischen Stream ist) und ist voraussichtlich der einzige unterstützte Ausgabegerätetyp in einem Fahrzeug.
Eine Systemimplementierung kann einen Bus-Port für alle Android-Töne verwenden. In diesem Fall mischt Android alles zusammen und liefert es als einen Stream aus. Alternativ kann die HAL einen Bus-Port für jeden CarAudioContext bereitstellen, um die gleichzeitige Bereitstellung beliebiger Audiotypen zu ermöglichen. So kann die HAL-Implementierung die verschiedenen Töne nach Belieben mischen und leiser stellen.
Die Zuweisung von Audiokontexten zu Ausgabegeräten erfolgt über die Datei car_audio_configuration.xml
. Weitere Informationen finden Sie unter Audiorichtlinie konfigurieren.