Die räumlichen Funktionen können je nach Gerät variieren und sich ändern, wenn Nutzer mit Ihrer App oder dem System interagieren. Sie können sogar von Ihrer App selbst geändert werden, z. B. wenn sie in den Home Space oder Full Space verschoben wird. Um Probleme zu vermeiden, muss Ihre App die räumlichen Funktionen prüfen, um festzustellen, welche APIs in der aktuellen Umgebung unterstützt werden.
Mit Jetpack Compose for XR nach räumlichen Funktionen suchen
Jetpack Compose für XR erstellt ein CompositionLocal, um die räumlichen Funktionen zu prüfen. Damit können Sie prüfen, ob die räumliche Benutzeroberfläche, Spatial Audio, Umgebungen, Passthrough oder 3D-Inhalte aktiviert sind.
Mit LocalSpatialCapabilities.current können Sie prüfen, ob die folgenden räumlichen Funktionen derzeit verfügbar sind:
isSpatialUiEnabled: Gibt an, ob die Anwendung räumliche UI-Elemente erstellen darf (z. B.SpatialPanel).isContent3dEnabled: Gibt an, ob die Anwendung 3D-Objekte erstellen darf.isAppEnvironmentEnabled: Gibt an, ob die Anwendung die Umgebung festlegen darf.isPassthroughControlEnabled: Gibt an, ob die Anwendung den Passthrough-Status steuern darf.isSpatialAudioEnabled: Gibt an, ob die Anwendung Spatial Audio verwenden darf.
Im folgenden Beispiel wird gezeigt, wie Sie prüfen, ob die räumliche Benutzeroberfläche aktiviert ist:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
Mit SceneCore nach räumlichen Funktionen suchen
Wenn Sie die SceneCore-Bibliothek verwenden, müssen Sie eine Sitzung erstellen. Nachdem die Sitzung erstellt wurde, können Sie mit spatialCapabilities aus der scene der Sitzung abfragen, welche räumlichen Funktionen derzeit verfügbar sind.
SPATIAL_3D_CONTENT: Mit der Aktivität können 3D-Inhalte erstellt werden.APP_ENVIRONMENT: Die Aktivität kann ihre eigene Umgebung festlegen.EMBED_ACTIVITY: Die Aktivität kann eine andere Aktivität räumlich einbetten.PASSTHROUGH_CONTROL: Die Aktivität kann den Passthrough-Modus aktivieren oder deaktivieren.SPATIAL_AUDIO: Für die Aktivität kann Spatial Audio verwendet werden.SPATIAL_UI: Die Aktivität kann sich selbst räumlich darstellen (z. B. durch Hinzufügen eines räumlichen Bereichs).
Sie können auch einen Callback abonnieren, addSpatialCapabilitiesChangedListener, der Sie benachrichtigt, wenn sich die räumlichen Funktionen geändert haben.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.contains( SpatialCapability.PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) && xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT) ) { // ... }
Mit dem Mischmodus die Anzeigefunktionen des Geräts prüfen
Unter Android XR haben XR‑Headsets und kabelgebundene XR‑Datenbrillen unterschiedliche Hardwarefunktionen, insbesondere in Bezug auf den Displaytyp. Möglicherweise musst du die Farben der Benutzeroberfläche deiner App und der gerenderten Objekte anpassen, um die Sichtbarkeit zu maximieren. Diese kann durch den Displaytyp und den bevorzugten Mischmodus des Geräts beeinflusst werden. Die DisplayBlendMode API bietet die Blendmodus-Funktion des Geräts für das Rendering. Mit dieser API können Sie festlegen, wie virtuelle Inhalte der realen Welt hinzugefügt werden.
Hier sind einige der wichtigsten Mischmodi:
ADDITIVE: Virtuelle Inhalte werden der realen Welt hinzugefügt, indem die Pixelwerte für die roten, grünen und blauen Komponenten addiert werden. Alpha wird ignoriert und schwarze Pixel werden transparent dargestellt.ALPHA_BLEND: Virtuelle Inhalte werden der realen Welt hinzugefügt, indem die Pixelwerte basierend auf der Alpha-Komponente mit Alpha-Blending gemischt werden.NO_DISPLAY: Blending wird auf dem Gerät nicht unterstützt.
Verwenden Sie XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() aus der Jetpack XR-Laufzeitbibliothek, um zu prüfen, welcher Typ von Überblendungsmodus verwendet wird, und nehmen Sie bei Bedarf Anpassungen vor.
Weitere Informationen
- Sitzung erstellen
- Wechsel zwischen HSM und FSM
- Räumliche Umgebungen zu Ihrer App hinzufügen
- 3D-Modelle zu Ihrer App hinzufügen