Hochwertiges Spatial Audio und Erfassung von Kopfbewegungen

Android 13 unterstützt Spatial Audio. Dazu werden APIs bereitgestellt, mit denen App-Entwickler feststellen können, ob die aktuelle Kombination aus Smartphone-Implementierung, verbundenem Headset und Nutzereinstellungen die Wiedergabe von mehrkanaligen Audioinhalten auf immersive Weise ermöglicht.

OEMs können einen Audioeffekt mit Spatializer und Unterstützung für die Kopferfassung mit der erforderlichen Leistung und Latenz bereitstellen, indem sie die neue Audiopipeline-Architektur und die Sensor-Framework-Integration nutzen. Das HID-Protokoll gibt an, wie ein Gerät zur Kopfverfolgung über Bluetooth angeschlossen und über das Android-Sensor-Framework als HID-Gerät verfügbar gemacht wird. Weitere Informationen zu den Anforderungen und zur Validierung finden Sie unter Spatial Audio und die Erfassung von Kopfbewegungen.

Die Richtlinien auf dieser Seite gelten für eine Spatial Audio-Lösung, die die neuen Spatial Audio APIs und die Audioarchitektur mit einem Android-Smartphone mit Android 13 oder höher und kompatiblen Headsets mit einem Sensor zur Erfassung von Kopfbewegungen nutzt.

Richtlinien für die Implementierung dynamischer und statischer Spatial Audio-Modi

Für statisches Spatial Audio ist keine Erfassung von Kopfbewegungen erforderlich. Daher sind keine speziellen Funktionen im Headset erforderlich. Alle kabelgebundenen und kabellosen Headsets unterstützen statisches Spatial Audio.

API-Implementierung

OEMs MÜSSEN die in Android 12 eingeführte Klasse Spatializer implementieren. Die Implementierung muss die CTS-Tests bestehen, die für die Klasse Spatializer eingeführt wurden.

Eine robuste API-Implementierung sorgt dafür, dass App-Entwickler, insbesondere Anbieter von Medien-Streamingdiensten, auf ein einheitliches Verhalten im gesamten System vertrauen und die besten Inhalte entsprechend den Gerätefunktionen, dem aktuellen Rendering-Kontext und den Nutzerauswahlen auswählen können.

Benutzeroberfläche

Prüfen Sie nach der Implementierung der Klasse Spatializer, ob Ihre Benutzeroberfläche das folgende Verhalten aufweist:

  • Wenn das Headset mit Spatial Audio gekoppelt ist, wird in den Bluetooth-Geräteeinstellungen für dieses Headset die Option Spatial Audio angezeigt:

    spatial-audio-ui

    Abbildung 1: Einstellung für Spatial Audio

  • Die Einstellungen sind verfügbar, wenn das Headset nicht verbunden ist.

  • Der Standardstatus für Spatial Audio nach der Erstkopplung des Headsets ist aktiviert.

  • Der vom Nutzer ausgewählte Status (aktiviert oder deaktiviert) bleibt nach einem Neustart des Smartphones oder dem Entkoppeln und Koppeln des Headsets erhalten.

Funktionales Verhalten

Audioformate

Die folgenden Audioformate MÜSSEN vom Spatializer-Effekt gerendert werden, wenn Spatial Audio aktiviert ist und das Rendering-Gerät ein kabelgebundenes oder Bluetooth-Headset ist:

  • AAC, 5.1-Kanal
  • Raw PCM, 5.1 Kanäle

Für eine bessere Nutzererfahrung empfehlen wir dringend, die folgenden Formate/Kanalkonfigurationen zu unterstützen:

  • Dolby Digital Plus
  • 5.1.2-, 7.1-, 7.1.2- und 7.1.4-Kanäle

Wiedergabe von Stereoinhalten

Stereoinhalte dürfen nicht über die Spatializer-Effekt-Engine gerendert werden, auch wenn Spatial Audio aktiviert ist. Wenn eine Implementierung die Spatialisierung von Stereoinhalten ermöglicht, muss eine benutzerdefinierte Benutzeroberfläche vorhanden sein, mit der Nutzer diese Funktion ganz einfach aktivieren oder deaktivieren können. Wenn die Funktion „Spatial Audio“ aktiviert ist, muss es möglich sein, zwischen der Wiedergabe von mehrkanaligen Inhalten mit räumlichem Klang und nicht räumlichen Stereoinhalten zu wechseln, ohne dass Änderungen an den Nutzereinstellungen oder eine Neuverbindung oder Neukonfiguration des Headsets erforderlich sind. Der Übergang zwischen Spatial Audio-Inhalten und Stereoinhalten muss mit minimalen Audiounterbrechungen erfolgen.

Anwendungsfallübergänge und Gleichzeitigkeit

Gehen Sie bei Sonderfällen so vor:

  • Benachrichtigungen müssen auf die gleiche Weise wie nicht-räumliche Audioinhalte mit den räumlichen Audioinhalten gemischt werden.
  • Klingeltöne müssen mit Spatial Audio-Inhalten gemischt werden dürfen. Standardmäßig wird der Spatial Audio-Inhalt jedoch vom Audiofokusmechanismus pausiert, wenn ein Klingelton ertönt.
  • Wenn Sie einen Anruf oder eine Videokonferenz annehmen oder starten, muss die räumliche Audiowiedergabe pausiert werden. Die Wiedergabe von Spatial Audio muss nach dem Ende des Anrufs mit denselben Spatial Audio-Einstellungen fortgesetzt werden. Die Neukonfiguration eines Audiopfads zum Wechseln vom Raumklangmodus in den Konversationsmodus muss schnell und nahtlos erfolgen, damit sich der Anruf nicht beeinträchtigt.

Rendering über Lautsprecher

Die Unterstützung der Audio-Spatialisierung über Lautsprecher oder der transaurale Modus sind nicht erforderlich.

Richtlinien für die Implementierung von Kopftracking

In diesem Abschnitt geht es um dynamisches Spatial Audio, für das bestimmte Headset-Anforderungen gelten.

Benutzeroberfläche

Prüfen Sie nach der Implementierung und Kopplung des Headsets mit Spatial Audio, ob Ihre Benutzeroberfläche das folgende Verhalten aufweist:

  • Wenn in den Bluetooth-Geräteeinstellungen die Einstellung Spatial Audio für das Headset aktiviert ist, wird unter Spatial Audio die Einstellung Erkennung von Kopfbewegungen angezeigt:

    ht-ui

    Abbildung 2: Einstellung für Spatial Audio und die Erfassung von Kopfbewegungen

  • Die Einstellung für die Erfassung von Kopfbewegungen ist NICHT sichtbar, wenn Spatial Audio deaktiviert ist.

  • Der Standardstatus für die Erfassung von Kopfbewegungen nach der Erstkopplung des Headsets ist aktiviert.

  • Der vom Nutzer ausgewählte Status (aktiviert oder deaktiviert) muss nach einem Neustart des Smartphones oder nach dem Entkoppeln und Koppeln des Headsets beibehalten werden.

Funktionales Verhalten

Berichte zur Kopfposition

  • Die Informationen zur Kopfposition, die in X-, Y- und Z-Koordinaten vom Headset an das Android-Gerät gesendet werden, müssen die Kopfbewegungen des Nutzers schnell und genau widerspiegeln.
  • Die Meldungen zur Kopfposition über die Bluetooth-Verbindung müssen dem HID-Protokoll entsprechen.
  • Das Headset darf die Informationen zur Kopfverfolgung nur dann an das Android-Smartphone senden, wenn der Nutzer die Option Kopfverfolgung in den Bluetooth-Geräteeinstellungen aktiviert hat.

Leistung

Latenz

Die Latenz der Kopfverfolgung ist die Zeitspanne zwischen der Erfassung der Kopfbewegung durch die IMU (Inertial Measurement Unit) und der Erkennung der durch diese Bewegung verursachten Tonänderung durch die Kopfhörer-Transducer. Die Latenz der Kopferfassung darf 150 ms nicht überschreiten.

Häufigkeit der Meldungen zur Kopfpose

Wenn die Kopferkennung aktiv ist, muss das Headset die Kopfposition in regelmäßigen Abständen von etwa 20 ms melden. Damit die Logik zur Erkennung veralteter Eingaben auf dem Smartphone bei einem Übertragungsjitter von Bluetooth nicht ausgelöst wird, darf die maximale Zeit zwischen zwei Aktualisierungen 40 ms nicht überschreiten.

Energieoptimierung

Zur Optimierung des Energieverbrauchs empfehlen wir, die Implementierung die Mechanismen zur Bluetooth-Codec-Umschaltung und Auswahl des Latenzmodus zu verwenden, die von den Schnittstellen Audio HAL und Bluetooth Audio HAL bereitgestellt werden.

Die AOSP-Implementierungen des Audio-Frameworks und des Bluetooth-Stacks unterstützen bereits die Signale zur Steuerung der Codec-Umschaltung. Wenn die Implementierung des OEMs die primäre Audio-HAL für Bluetooth-Audio verwendet, auch als Codec-Offload-Modus bezeichnet, muss der OEM dafür sorgen, dass die Audio-HAL diese Signale zwischen der Audio-HAL und dem Bluetooth-Stack weiterleitet.

Codec-Wechsel

Wenn dynamischer Raumklang und die Erfassung von Kopfbewegungen aktiviert sind, verwende einen Codec mit niedriger Latenz, z. B. Opus. Verwenden Sie beim Abspielen nicht räumlicher Audioinhalte einen Codec mit geringem Energieverbrauch, z. B. Advanced Audio Coding (AAC).

Beachte beim Umschalten des Codecs die folgenden Regeln:

  • Es wird nur die Aktivität in den folgenden Audio-HAL-Ausgabestreams erfasst:
    • Spezielle Spatializer-Ausgabe
    • Medienspezifische Streams, z. B. Deep Buffer oder komprimiertes Offload
  • Wenn alle relevanten Streams inaktiv sind und der Spatializer-Stream gestartet wird, starte den Bluetooth-Stream mit isLowLatency auf true, um einen Codec mit niedriger Latenz anzugeben.

  • Wenn alle relevanten Streams inaktiv sind und ein Medienstream gestartet wird, starten Sie den Bluetooth-Stream mit isLowLatency auf false, um einen Codec mit geringem Energieverbrauch anzugeben.

  • Wenn ein Medienstream aktiv ist und der Spatializer-Stream gestartet wird, starten Sie den Bluetooth-Stream neu, wobei isLowLatency auf true gesetzt ist.

Das Headset muss sowohl Decoder mit niedriger Latenz als auch mit niedrigem Energieverbrauch unterstützen und das Standardprotokoll zur Auswahl des Codecs implementieren.

Anpassung des Latenzmodus

Die Anpassung des Latenzmodus erfolgt, wenn der Codec mit geringer Latenz ausgewählt ist.

Je nachdem, ob die Kopfverfolgung aktiviert oder deaktiviert ist, werden bei der Anpassung des Latenzmodus verfügbare Mechanismen verwendet, um die Latenz zu verringern oder zu erhöhen und so den besten Kompromiss zwischen Latenz, Leistung und Audioqualität zu erreichen. Wenn Spatial Audio und die Erfassung von Kopfbewegungen aktiviert sind, wird der Modus mit niedriger Latenz ausgewählt. Wenn Spatial Audio aktiviert und die Erfassung von Kopfbewegungen deaktiviert ist, wird der Modus ohne Latenz ausgewählt. Die Latenzeinstellung ermöglicht eine erhebliche Energieeinsparung und eine erhöhte Robustheit der Bluetooth-Audioverbindung, wenn nur statisches räumliches Audio angefordert wird. Der häufigste Mechanismus zur Latenzeinstellung ist die Verringerung oder Erweiterung der Jitter-Puffergröße im Bluetooth-Headset.

Unter Erkennung von Kopfbewegungen über LE Audio finden Sie Informationen zur Anpassung des Latenzmodus für LE Audio.