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 Raumklang und Unterstützung für die Kopfbewegungserkennung 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 von dynamischen und statischen 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:
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 nach dem Entkoppeln und Koppeln des Headsets erhalten.
Funktionales Verhalten
Audioformate
Die folgenden Audioformate MÜSSEN mit dem Raumklangeffekt gerendert werden, wenn Raumklang aktiviert ist und das Rendering-Gerät ein kabelgebundenes oder Bluetooth-Headset ist:
- AAC, 5.1-Kanäle
- Raw PCM, 5.1-Kanal
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 mit der Spatializer-Effekt-Engine gerendert werden, selbst wenn Spatial Audio aktiviert ist. Wenn eine Implementierung die Spatialisierung von Stereoinhalten ermöglicht, muss eine benutzerdefinierte Benutzeroberfläche vorhanden sein, über die Nutzer diese Funktion ganz einfach aktivieren oder deaktivieren können. Wenn der Raumklang aktiviert ist, muss es möglich sein, zwischen der Wiedergabe von mehrkanaligen Inhalten mit Raumklang 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 mit Raumklanginhalten genauso gemischt werden wie nicht räumliche Audioinhalte.
- Klingeltöne müssen mit Spatial Audio-Inhalten kombiniert 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 Spatial Audio-Wiedergabe muss nach dem Anruf mit denselben Einstellungen für Raumklang 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 Transaural-Modus sind nicht erforderlich.
Richtlinien für die Implementierung von Head-Tracking
In diesem Abschnitt geht es um dynamisches Spatial Audio, für das bestimmte Headset-Anforderungen gelten.
Benutzeroberfläche
Prüfe nach der Implementierung und Kopplung des Spatial Audio-fähigen Headsets, ob deine UI 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:
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, ob aktiviert oder deaktiviert, muss auch nach einem Neustart des Smartphones oder durch Entkoppeln und Koppeln des Headsets bestehen bleiben.
Funktionales Verhalten
Berichte zur Kopfposition
- Die Informationen zur Kopfposition, die vom Headset an das Android-Gerät gesendet werden, müssen die Kopfbewegungen des Nutzers schnell und genau widerspiegeln.
- Berichte zur Kopfposition über den Bluetooth-Link müssen dem über HID definierten Protokoll entsprechen.
- Das Headset darf nur dann Informationen zur Erfassung von Kopfbewegungen an das Android-Smartphone senden, wenn der Nutzer in den Einstellungen des Bluetooth-Geräts die Option Erfassung von Kopfbewegungen aktiviert hat.
Leistung
Latenz
Die Latenz der Kopfverfolgung ist die Zeit, die vergeht, bis die von der IMU (Inertial Measurement Unit) erfasste Kopfbewegung von den Kopfhörer-Treibern erkannt wird. Die Latenz für das Head-Tracking darf 150 ms nicht überschreiten.
Häufigkeit der Meldungen zur Kopfposition
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 der Stromversorgung empfehlen wir, dass die Implementierung die Mechanismen zum Bluetooth-Codec-Wechsel und zur Auswahl des Latenzmodus verwendet, die von den Audio-HAL-Schnittstellen und Bluetooth-Audio-HAL-Schnittstellen bereitgestellt werden.
Die AOSP-Implementierungen des Audio-Frameworks und des Bluetooth-Stacks unterstützen bereits die Signale zur Steuerung des Codec-Wechsels. Wenn die Implementierung des OEMs den primären Audio-HAL für Bluetooth-Audio verwendet, auch als Codec-Auslagerungsmodus bezeichnet, muss der OEM dafür sorgen, dass der Audio-HAL diese Signale zwischen dem Audio-HAL und dem Bluetooth-Stack weiterleitet.
Codec-Wechsel
Wenn dynamisches Spatial Audio und die Erfassung von Kopfbewegungen aktiviert sind, verwenden Sie einen Codec mit niedriger Latenz, z. B. Opus. Verwenden Sie für die Wiedergabe nicht raumbezogener Audioinhalte einen Codec mit geringem Stromverbrauch, z. B. Advanced Audio Coding (AAC).
Beachte beim Umschalten des Codecs die folgenden Regeln:
- Es wird nur die Aktivität in den folgenden HAL-Audioausgabestreams 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
auftrue
, 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
auffalse
, 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
auftrue
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.
Latenzmodusanpassung
Die Anpassung des Latenzmodus erfolgt, wenn der Codec mit niedriger Latenz ausgewählt wird.
Je nachdem, ob die Erfassung von Kopfbewegungen aktiviert oder deaktiviert ist, verwendet die Latenzmodusanpassung verfügbare Mechanismen, um die Latenz zu verringern oder zu erhöhen, um den besten Kompromiss zwischen Latenz, Stromversorgung und Audioqualität zu erzielen. 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 Latenzkorrektur ist die Verringerung oder Erweiterung der Jitter-Puffergröße im Bluetooth-Headset.
Unter Kopf-Tracking über LE Audio finden Sie Informationen zur Anpassung des Latenzmodus für LE Audio.