Überblick

Android Automotive OS (AAOS) baut auf dem Kern-Android-Audio-Stack auf, um die Anwendungsfälle für den Betrieb als Infotainmentsystem in einem Fahrzeug zu unterstützen. AAOS ist für Infotainment-Töne (also Medien, Navigation und Kommunikation) verantwortlich, aber nicht direkt für Glockenspiele und Warnungen, für die strenge Verfügbarkeits- und Zeitvorgaben gelten.

Während AAOS Signale und Mechanismen bereitstellt, die das Fahrzeug bei der Audioverwaltung unterstützen, ist es letztendlich Sache des Fahrzeugs, festzulegen, welche Geräusche für den Fahrer und die Passagiere abgespielt werden sollen, um sicherzustellen, dass sicherheitskritische Geräusche und behördliche Geräusche ordnungsgemäß gehört werden Unterbrechung.

Da AAOS den Android-Audio-Stack nutzt, müssen Anwendungen von Drittanbietern, die Audio abspielen, nichts anderes tun als bei Mobiltelefonen. Das Audiorouting der Anwendung wird automatisch von AAOS verwaltet, wie unter Konfiguration der Audiorichtlinie beschrieben.

Da Android das Medienerlebnis des Fahrzeugs verwaltet, sollten externe Medienquellen wie der Radiotuner durch Apps repräsentiert werden, die Audiofokus und Medientastenereignisse für die Quelle verarbeiten können.

Android-Sounds und -Streams

Automotive-Audiosysteme verarbeiten die folgenden Sounds und Streams:

image

Abbildung 1. Stream-zentriertes Architekturdiagramm.

Android verwaltet die Sounds, die von Android-Apps kommen, steuert diese Apps und leitet ihre Sounds basierend auf der Art des Sounds an Ausgabegeräte im HAL weiter:

  • Logische Streams , in der Kern-Audionomenklatur als Quellen bezeichnet, sind mit Audioattributen gekennzeichnet.

  • Physische Streams , in der Kern-Audionomenklatur als Geräte bezeichnet, verfügen nach dem Mischen über keine Kontextinformationen.

Aus Gründen der Zuverlässigkeit werden externe Töne (die von unabhängigen Quellen stammen, z. B. Sicherheitsgurt-Warntöne) außerhalb von Android, unterhalb des HAL oder sogar in separater Hardware verwaltet. Systemimplementierer müssen einen Mixer bereitstellen, der einen oder mehrere Sound-Streams von Android akzeptiert und diese Streams dann auf geeignete Weise mit den für das Fahrzeug erforderlichen externen Soundquellen kombiniert. Die Android-Steuerungs-HAL bietet einen anderen Mechanismus für die Kommunikation von außerhalb von Android erzeugten Sounds mit Android:

  • Audio-Fokus-Anfrage
  • Verstärkungs- oder Lautstärkebeschränkungen
  • Verstärkungs- und Lautstärkeänderungen

Die Audio-HAL-Implementierung und der externe Mixer sind dafür verantwortlich, dass die sicherheitskritischen externen Sounds gehört werden und die von Android bereitgestellten Streams eingemischt und an geeignete Lautsprecher weitergeleitet werden.

Android-Sounds

Apps verfügen möglicherweise über einen oder mehrere Player, die über die Standard-Android-APIs (z. B. AudioManager für die Fokussteuerung oder MediaPlayer für Streaming) interagieren, um einen oder mehrere logische Streams von Audiodaten auszugeben. Bei diesen Daten kann es sich um Einkanal-Mono- oder 7.1-Surround-Daten handeln, sie werden jedoch als eine einzige Quelle weitergeleitet und behandelt. Der App-Stream ist mit AudioAttributen verknüpft, die dem System Hinweise dazu geben, wie das Audio ausgedrückt werden soll.

Die logischen Streams werden über AudioService gesendet und an einen (und nur einen) der verfügbaren physischen Ausgabestreams weitergeleitet, von denen jeder der Ausgang eines Mixers in AudioFlinger ist. Nachdem die Audioattribute zu einem physischen Stream zusammengemischt wurden, sind sie nicht mehr verfügbar.

Jeder physische Stream wird dann zum Rendern auf der Hardware an den Audio-HAL übermittelt. In Automobil-Apps kann es sich bei der Rendering-Hardware um lokale Codecs (ähnlich wie bei Mobilgeräten) oder einen Remote-Prozessor im physischen Netzwerk des Fahrzeugs handeln. In jedem Fall ist es die Aufgabe der Audio-HAL-Implementierung, die tatsächlichen Beispieldaten bereitzustellen und dafür zu sorgen, dass sie hörbar werden.

Externe Streams

Soundstreams, die (aus Zertifizierungs- oder Timing-Gründen) nicht über Android geleitet werden sollten, können direkt an den externen Mixer gesendet werden. Ab Android 11 ist HAL nun in der Lage, den Fokus für diese externen Sounds anzufordern, um Android darüber zu informieren, dass es entsprechende Maßnahmen ergreifen kann, z. B. das Anhalten von Medien oder das Verhindern, dass andere den Fokus erhalten.

Wenn externe Streams Medienquellen sind, die mit der von Android erzeugten Klangumgebung interagieren sollen (z. B. die MP3-Wiedergabe stoppen, wenn ein externer Tuner eingeschaltet wird), sollten diese externen Streams durch eine Android-App dargestellt werden. Eine solche App würde den Audio-Fokus im Namen der Medienquelle anstelle des HAL anfordern und auf Fokusbenachrichtigungen reagieren, indem sie die externe Quelle nach Bedarf startet und stoppt, um in die Android-Fokusrichtlinie zu passen.

Die App ist auch für die Verarbeitung wichtiger Medienereignisse wie Wiedergabe und Pause verantwortlich. Ein vorgeschlagener Mechanismus zur Steuerung solcher externen Geräte ist HwAudioSource . Weitere Informationen finden Sie unter Anschließen eines Eingabegeräts in AAOS .

Ausgabegeräte

Auf der Audio-HAL-Ebene stellt der Gerätetyp AUDIO_DEVICE_OUT_BUS ein generisches Ausgabegerät für den Einsatz in Fahrzeug-Audiosystemen bereit. Das Busgerät unterstützt adressierbare Ports (wobei jeder Port der Endpunkt für einen physischen Stream ist) und dürfte der einzige unterstützte Ausgabegerätetyp in einem Fahrzeug sein.

Eine Systemimplementierung kann einen Bus-Port für alle Android-Sounds verwenden. In diesem Fall mischt Android alles zusammen und liefert es als einen Stream. Alternativ kann der HAL einen Bus-Port für jeden CarAudioContext bereitstellen, um die gleichzeitige Bereitstellung jedes Tontyps zu ermöglichen. Dies ermöglicht es der HAL-Implementierung, die verschiedenen Sounds nach Wunsch zu mischen und zu ducken.

Die Zuweisung von Audiokontexten zu Ausgabegeräten erfolgt über die Datei car_audio_configuration.xml . Weitere Informationen finden Sie unter Audiorichtlinienkonfiguration .