Android Automotive OS (AAOS) basiert auf dem Android-Audiostack und unterstützt die Anwendungsfälle für den Betrieb als Infotainmentsystem in einem Fahrzeug. AAOS ist für Infotainment-Sounds (d. h. Medien, Navigation und Kommunikation) verantwortlich, aber nicht direkt für Warntöne und Warnungen, die strenge Verfügbarkeits- und Timinganforderungen haben.
AAOS bietet zwar Signale und Mechanismen, die dem Fahrzeug bei der Audiowiedergabe helfen, aber letztendlich entscheidet das Fahrzeug, welche Töne für den Fahrer und die Beifahrer wiedergegeben werden sollen. So wird sichergestellt, dass sicherheitsrelevante und gesetzlich vorgeschriebene Töne ohne Unterbrechung zu hören sind.
Da AAOS den Android-Audiostack nutzt, müssen Drittanbieteranwendungen, die Audio wiedergeben, nichts anderes tun als auf Smartphones. Das Audio-Routing der Anwendung wird automatisch von AAOS verwaltet, wie unter Audio-Richtlinienkonfiguration beschrieben.
Da Android die Medienwiedergabe des Fahrzeugs verwaltet, sollten externe Medienquellen wie der Radiotuner durch Apps dargestellt werden, die den Audiofokus und Media-Key-Ereignisse für die Quelle verarbeiten können.
Android-Sounds und -Streams
Automotive-Audiosysteme verarbeiten die folgenden Sounds und Streams:
Abbildung 1: Diagramm der streamzentrierten Architektur.
Android verwaltet die Sounds von Android-Apps, steuert diese Apps und leitet ihre Sounds basierend auf dem Soundtyp an Ausgabegeräte auf der HAL-Ebene weiter:
Logische Streams, die in der Core Audio-Nomenklatur als Quellen bezeichnet werden, sind mit Audioattributen getaggt.
Physische Streams, die in der Core Audio-Nomenklatur als Geräte bezeichnet werden, enthalten nach dem Mischen keine Kontextinformationen.
Aus Gründen der Zuverlässigkeit werden externe Geräusche (aus unabhängigen Quellen wie Warntönen für Sicherheitsgurte) außerhalb von Android, unterhalb der HAL oder sogar in separater Hardware verwaltet. Systemimplementierer müssen einen Mixer bereitstellen, der einen oder mehrere Streams von Audioeingaben von Android akzeptiert und diese Streams dann auf geeignete Weise mit den vom Fahrzeug benötigten externen Audioquellen kombiniert. Das Android Control HAL bietet einen anderen Mechanismus für die Kommunikation von außerhalb von Android generierter Sounds zurück zu Android:
- Anfrage zum Audiofokus
- Verstärkungs- oder Lautstärkebegrenzungen
- Verstärkungs- und Lautstärkeänderungen
Die Audio-HAL-Implementierung und der externe Mixer sind dafür verantwortlich, dass sicherheitskritische externe Geräusche zu hören sind, die von Android bereitgestellten Streams gemischt und an geeignete Lautsprecher weitergeleitet werden.
Android-Sounds
Apps können einen oder mehrere Player haben, die über die Standard-Android-APIs interagieren (z. B. AudioManager für die Fokussteuerung oder MediaPlayer für das Streaming), um einen oder mehrere logische Streams von Audiodaten auszugeben. Diese Daten können einkanalig (Mono) oder 7.1-Surround-Sound sein, werden aber als eine einzige Quelle geroutet und behandelt. Der App-Stream ist mit AudioAttributes verknüpft, die dem System Hinweise darauf geben, wie der Audioinhalt wiedergegeben werden soll.
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 auf einen physischen Stream heruntergemischt wurden, sind sie nicht mehr verfügbar.
Jeder physische Stream wird dann an das Audio-HAL zur Wiedergabe auf der Hardware gesendet. In Automotive-Apps kann die Rendering-Hardware lokale Codecs (ähnlich wie bei Mobilgeräten) oder ein Remote-Prozessor im physischen 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
Soundstreams, die nicht über Android geleitet werden sollen (aus Zertifizierungs- oder Timing-Gründen), können direkt an den externen Mixer gesendet werden. Ab Android 11 kann das HAL den Fokus für diese externen Sounds anfordern, um Android zu informieren, damit es geeignete Maßnahmen ergreifen kann, 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 Soundumgebung interagieren sollen (z. B. MP3-Wiedergabe beenden, wenn ein externer Tuner eingeschaltet wird), sollten diese externen Streams durch eine Android-App dargestellt werden. Eine solche App würde im Namen der Medienquelle anstelle des HAL Audio-Fokus anfordern und auf Fokusbenachrichtigungen reagieren, indem sie die externe Quelle nach Bedarf startet und beendet, um der Android-Fokusrichtlinie zu entsprechen.
Die App ist auch für die Verarbeitung von Medientastenereignissen wie „Wiedergabe“ und „Pause“ verantwortlich. Ein vorgeschlagener Mechanismus zur Steuerung solcher externen Geräte ist HwAudioSource. Weitere Informationen finden Sie unter Eingabegerät in AAOS verbinden.
Ausgabegeräte
Auf der Audio-HAL-Ebene bietet der Gerätetyp AUDIO_DEVICE_OUT_BUS ein generisches Ausgabegerät für die Verwendung in Fahrzeug-Audiosystemen. Das Busgerät unterstützt adressierbare Ports (wobei jeder Port der Endpunkt für einen physischen Stream ist) und ist voraussichtlich der einzige unterstützte Ausgabegerätetyp in einem Fahrzeug.
Bei einer Systemimplementierung kann ein Busport für alle Android-Sounds verwendet werden. In diesem Fall mischt Android alles zusammen und gibt es als einen Stream aus. Alternativ kann das HAL einen Busport für jeden CarAudioContext bereitstellen, um die gleichzeitige Übertragung aller Soundtypen zu ermöglichen. So kann die HAL-Implementierung die verschiedenen Sounds nach Bedarf mischen und absenken.
Die Zuweisung von Audiokontexten zu Ausgabegeräten erfolgt über die Datei car_audio_configuration.xml. Weitere Informationen finden Sie unter Audiowiedergaberichtlinie konfigurieren.