Mit Android 13 wird die Unterstützung für räumliches Audio eingeführt. Dazu werden APIs bereitgestellt, mit denen App-Entwickler herausfinden können, ob die aktuelle Kombination aus Smartphone-Implementierung, verbundenem Headset und Nutzereinstellungen die Wiedergabe von Mehrkanal-Audioinhalten auf immersive Weise ermöglicht.
OEMs können einen Spatializer-Audioeffekt mit Unterstützung für die Erfassung von Kopfbewegungen mit dem erforderlichen Leistungsniveau und der erforderlichen Latenz bereitstellen. Dazu nutzen sie die neue Audio-Pipeline-Architektur und die Sensor-Framework-Integration. Das HID-Protokoll gibt an, wie ein Head-Tracking-Gerät über Bluetooth verbunden und über das Android-Sensor-Framework als HID-Gerät verfügbar gemacht wird. Weitere Anforderungen und Validierungen finden Sie unter Spatial Audio und Erfassung von Kopfbewegungen.
Die Richtlinien auf dieser Seite gelten für eine Spatial Audio-Lösung, die die neuen Spatial Audio-APIs und die neue Audioarchitektur mit einem Android-Smartphone mit Android 13 oder höher und kompatiblen Headsets mit Sensor zur Erfassung von Kopfbewegungen verwendet.
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 besonderen 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 Media-Streamingdienste, sich auf einheitliches Verhalten im gesamten Ökosystem verlassen und die besten Inhalte entsprechend den Gerätefunktionen, dem aktuellen Rendering-Kontext und den Nutzerauswahlen auswählen können.
Benutzeroberfläche
Nachdem Sie die Klasse Spatializer
implementiert haben, prüfen Sie, ob die Benutzeroberfläche das folgende Verhalten aufweist:
Wenn das für Spatial Audio geeignete Headset gekoppelt ist, wird in den Bluetooth-Geräteeinstellungen für dieses Headset ein Schalter für 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 dem ersten Koppeln des Headsets ist aktiviert.
Der vom Nutzer ausgewählte Status (aktiviert oder deaktiviert) bleibt auch nach einem Neustart des Smartphones oder nach dem Entkoppeln und erneuten Koppeln des Headsets erhalten.
Funktionsweise
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-Kanäle
- Unbearbeitetes PCM, 5.1 Kanäle
Für eine bessere Nutzererfahrung empfehlen wir dringend, die folgenden Formate/Channel-Konfigurationen zu unterstützen:
- Dolby Digital Plus
- 5.1.2-, 7.1-, 7.1.2- und 7.1.4-Kanäle
Wiedergabe von Stereo-Inhalten
Stereoinhalte dürfen nicht über die Spatializer-Effekt-Engine gerendert werden, auch wenn Spatial Audio aktiviert ist. Wenn eine Implementierung die räumliche Darstellung von Stereo-Inhalten ermöglicht, muss eine benutzerdefinierte Benutzeroberfläche vorhanden sein, über die der Nutzer diese Funktion einfach aktivieren oder deaktivieren kann. Wenn Spatial Audio aktiviert ist, muss es möglich sein, zwischen der Wiedergabe von räumlich gerenderten Mehrkanal-Inhalten und nicht räumlich gerenderten Stereo-Inhalten zu wechseln, ohne dass Änderungen an den Nutzereinstellungen, eine erneute Verbindung oder eine Neukonfiguration des Headsets erforderlich sind. Der Übergang zwischen Spatial Audio-Inhalten und Stereo-Inhalten muss mit minimalen Audio-Unterbrechungen erfolgen.
Übergänge zwischen Anwendungsfällen und Gleichzeitigkeit
So gehen Sie mit Sonderfällen um:
- Benachrichtigungen müssen auf dieselbe Weise mit Spatial Audio-Inhalten gemischt werden wie mit Audioinhalten ohne Spatial Audio.
- Klingeltöne müssen mit Spatial Audio-Inhalten gemischt werden dürfen. Standardmäßig wird der Spatial Audio-Inhalt jedoch durch den Audiofokusmechanismus pausiert, wenn ein Klingelton ertönt.
- Wenn Sie einen Anruf oder eine Videokonferenz annehmen oder starten, muss die Wiedergabe von räumlichem Audio pausiert werden. Die Wiedergabe von Spatial Audio muss nach dem Ende des Anrufs mit denselben Spatial Audio-Einstellungen fortgesetzt werden. Die Neukonfiguration eines Audiopfads, um vom Raumklangmodus in den Konversationsmodus zu wechseln, muss schnell und nahtlos erfolgen, damit das Anruferlebnis nicht beeinträchtigt wird.
Wiedergabe über Lautsprecher
Die Unterstützung der Audio-Räumlichkeit über Lautsprecher oder des transauralen Modus ist nicht erforderlich.
Richtlinien für die Implementierung von Kopfbewegungen
In diesem Abschnitt geht es um dynamisches Spatial Audio, für das bestimmte Headsets erforderlich sind.
Benutzeroberfläche
Nach der Implementierung und dem Koppeln des Headsets, das Spatial Audio unterstützt, müssen Sie prüfen, ob die Benutzeroberfläche die folgenden Verhaltensweisen aufweist:
Wenn in den Bluetooth-Geräteeinstellungen die Einstellung Spatial Audio für das Headset aktiviert ist, wird unter Spatial Audio die Einstellung Erfassung von Kopfbewegungen angezeigt:
Abbildung 2: Einstellungen 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.
Nach der ersten Kopplung des Headsets ist die Erfassung von Kopfbewegungen standardmäßig 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.
Funktionsweise
Berichte zur Kopfhaltung
- Informationen zur Kopfhaltung in den Koordinaten x, y und z, die vom Headset an das Android-Gerät gesendet werden, müssen die Kopfbewegungen des Nutzers schnell und genau widerspiegeln.
- Die Meldung der Kopfhaltung über die Bluetooth-Verbindung muss dem über HID definierten Protokoll folgen.
- Das Headset darf die Informationen zum Head-Tracking nur dann an das Android-Smartphone senden, wenn der Nutzer Head-Tracking in den Einstellungen des Bluetooth-Geräts aktiviert.
Leistung
Latenz
Die Latenz beim Head-Tracking ist die Zeit, die vergeht, bis die Kopfhörerwandler die durch die Bewegung verursachte Änderung des Klangs erkennen, nachdem die Inertiale Messeinheit (Inertial Measurement Unit, IMU) die Kopfbewegung erfasst hat. Die Latenz für die Erfassung von Kopfbewegungen darf maximal 150 ms betragen.
Berichterstellungsrate für Kopfhaltung
Wenn die Kopf-Tracker-Funktion aktiv ist, muss das Headset die Kopfposition in einem empfohlenen periodischen Intervall von etwa 20 ms melden. Damit die Logik zur Erkennung veralteter Eingaben auf dem Smartphone bei einem Übertragungs-Jitter des Bluetooth nicht ausgelöst wird, darf die maximale Zeit zwischen zwei Updates 40 ms nicht überschreiten.
Optimierung des Energieverbrauchs
Zur Optimierung des Stromverbrauchs empfehlen wir, dass die Implementierung die von der Audio-HAL und den Bluetooth-Audio-HAL-Schnittstellen bereitgestellten Mechanismen für Bluetooth-Codec-Wechsel und Auswahl des Latenzmodus verwendet.
Die AOSP-Implementierungen des Audio-Frameworks und des Bluetooth-Stacks unterstützen bereits die Signale zur Steuerung des Codec-Wechsels. Wenn die Implementierung des OEM den primären Audio-HAL für Bluetooth-Audio verwendet, der als Codec-Offload-Modus bezeichnet wird, 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. Verwende bei der Wiedergabe von nicht räumlichen Audioinhalten einen Codec mit geringem Stromverbrauch, z. B. Advanced Audio Coding (AAC).
Beachten Sie beim Wechseln des Codecs die folgenden Regeln:
- Nur die Aktivität in den folgenden Audio-HAL-Ausgabestreams erfassen:
- Spezielle Spatializer-Ausgabe
- Medienspezifische Streams, z. B. Wiedergabe mit Deep Buffer oder komprimiertem Offload
Wenn alle relevanten Streams im Leerlauf sind und der Spatializer-Stream startet, starte den Bluetooth-Stream mit
isLowLatency
auftrue
, um einen Codec mit niedriger Latenz anzugeben.Wenn alle relevanten Streams im Leerlauf sind und ein Media-Stream gestartet wird, starten Sie den Bluetooth-Stream mit
isLowLatency
auffalse
, um einen Low-Power-Codec anzugeben.Wenn ein Media-Stream aktiv ist und der Spatializer-Stream startet, starte den Bluetooth-Stream mit
isLowLatency
auftrue
neu.
Auf der Headset-Seite muss das Headset sowohl die Decoder mit niedriger Latenz als auch die Decoder mit geringem Stromverbrauch unterstützen und das Standardprotokoll für die Codec-Auswahl implementieren.
Latenzmodus anpassen
Die Anpassung des Latenzmodus erfolgt, wenn der Codec für geringe Latenzzeit ausgewählt ist.
Je nachdem, ob die Head-Tracking-Funktion aktiviert oder deaktiviert ist, werden verfügbare Mechanismen verwendet, um die Latenz anzupassen und so den besten Kompromiss zwischen Latenz, Stromverbrauch 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 mit geringer Latenz ausgewählt. Die Latenzanpassung führt zu erheblichen Energieeinsparungen und einer erhöhten Robustheit der Bluetooth-Audioverbindung, wenn nur statisches Spatial Audio angefordert wird. Der häufigste Mechanismus zur Anpassung der Latenz ist die Verkleinerung oder Vergrößerung der Jitter-Puffergröße im Bluetooth-Headset.
Weitere Informationen zu Anpassungen des Latenzmodus für LE Audio findest du unter Erfassung von Kopfbewegungen über LE Audio.