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 Leistungs- und Latenzniveau 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 Validierungsinformationen 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 und höher sowie 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 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-System
- Rohes 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 sie eine benutzerdefinierte Benutzeroberfläche bieten, ü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 oder eine erneute Verbindung oder Konfiguration des Headsets erforderlich sind. Der Übergang zwischen Raumklang- und Stereoinhalten muss mit minimalen Audiobeeinträchtigungen 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 Nicht-Spatial Audio-Inhalten.
- 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 ein Telefonanruf oder eine Videokonferenz angenommen oder gestartet wird, 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 Spatial Audio-Modus in den Konversationsmodus muss schnell und nahtlos erfolgen, damit die Anruferfahrung 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 der Erfassung 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 dem ersten Koppeln des Headsets ist die Erfassung von Kopfbewegungen standardmäßig aktiviert.
Der vom Nutzer ausgewählte Status (aktiviert oder deaktiviert) muss auch nach einem Neustart des Smartphones oder nach dem Entkoppeln und Koppeln des Headsets beibehalten werden.
Funktionsweise
Berichte zur Kopfhaltung
- Informationen zur Kopfhaltung in x-, y- und z-Koordinaten, die vom Headset an das Android-Gerät gesendet werden, müssen die Kopfbewegungen des Nutzers schnell und genau widerspiegeln.
- Die Meldung der Kopfposition über die Bluetooth-Verbindung muss dem über HID definierten Protokoll folgen.
- Das Headset darf die Erfassung von Kopfbewegungen nur dann an das Android-Smartphone senden, wenn der Nutzer die Erfassung von Kopfbewegungen in der Benutzeroberfläche der Bluetooth-Geräteeinstellungen 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 (IMU) die Kopfbewegung erfasst hat. Die Latenz für die Erfassung von Kopfbewegungen darf 150 ms nicht überschreiten.
Berichtshäufigkeit der Kopfhaltung
Wenn die Erfassung von Kopfbewegungen aktiv ist, muss das Headset die Kopfposition in einem empfohlenen regelmäßigen 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 Mechanismen für Bluetooth-Codec-Wechsel und Auswahl des Latenzmodus verwendet, 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 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, verwende 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 wie Deep Buffer oder die Wiedergabe von komprimierten Offload-Dateien
Wenn alle relevanten Streams inaktiv sind und der Spatializer-Stream startet, starte den Bluetooth-Stream mit
isLowLatencyauftrue, um einen Codec mit niedriger Latenz anzugeben.Wenn alle relevanten Streams inaktiv sind und ein Media-Stream beginnt, starten Sie den Bluetooth-Stream mit
isLowLatencyauffalse, um einen Low-Power-Codec anzugeben.Wenn ein Media-Stream aktiv ist und der Spatializer-Stream gestartet wird, starte den Bluetooth-Stream mit
isLowLatencyauftrueneu.
Auf 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 Erfassung von Kopfbewegungen aktiviert oder deaktiviert ist, werden die verfügbaren Mechanismen verwendet, um die Latenz zu verringern oder zu erhöhen 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 für geringe Latenzzeit verwendet. Wenn Spatial Audio aktiviert und die Erfassung von Kopfbewegungen deaktiviert ist, wird der Modus ohne 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 zum Anpassen des Latenzmodus für LE Audio findest du unter Erfassung von Kopfbewegungen über LE Audio.