Geografische Funktionen prüfen

Anwendbare XR‑Geräte
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für diese Arten von XR-Geräten zu entwickeln.
XR-Headsets
XR-Datenbrille mit Kabel

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. beim Wechsel in den Home Space oder Full Space. Um Probleme zu vermeiden, muss Ihre App prüfen, welche räumlichen Funktionen verfügbar sind, um zu ermitteln, welche APIs in der aktuellen Umgebung unterstützt werden.

Räumliche Funktionen mit Jetpack Compose für XR prüfen

Mit Jetpack Compose für XR wird ein Composition Local zum Prüfen räumlicher Funktionen erstellt. Damit können Sie prüfen, ob 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:

Das folgende Beispiel zeigt, wie Sie prüfen können, ob die räumliche Benutzeroberfläche aktiviert ist:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

Räumliche Funktionen mit SceneCore prüfen

Wenn Sie die SceneCore-Bibliothek verwenden, müssen Sie eine Sitzung erstellen. Nachdem die Sitzung erstellt wurde, können Sie mit spatialCapabilities aus dem 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 räumlich in eine andere Aktivität eingebettet werden.
  • PASSTHROUGH_CONTROL: Mit der Aktivität kann der Passthrough aktiviert oder deaktiviert werden.
  • SPATIAL_AUDIO: Die Aktivität kann räumlichen Audio verwenden.
  • SPATIAL_UI: Die Aktivität kann räumlich dargestellt werden, z. B. durch Hinzufügen eines räumlichen Bereichs.

Sie können auch einen Callback addSpatialCapabilitiesChangedListener abonnieren, der Sie benachrichtigt, wenn sich räumliche 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)
) {
    // ...
}

Mischmodus verwenden, um die Anzeigefunktionen des Geräts zu prüfen

Auf Android XR haben XR-Headsets und kabelgebundene XR-Brillen unterschiedliche Hardwarefunktionen, insbesondere in Bezug auf den Displaytyp. Möglicherweise müssen Sie die Farben der Benutzeroberfläche Ihrer 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 Möglichkeit, den Mischmodus des Geräts für das Rendern abzurufen. Mit dieser API können Sie festlegen, wie virtuelle Inhalte in die reale Welt eingefügt werden.

Hier sind einige der Mischmodi, die Sie kennen sollten:

  • ADDITIVE: Virtuelle Inhalte werden der realen Welt hinzugefügt, indem die Pixelwerte für die einzelnen Rot-, Grün- und Blaukomponenten addiert werden. Der Alphawert 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 per Alpha-Blending kombiniert werden.
  • NO_DISPLAY: Das Zusammenführen von Bildern wird auf dem Gerät nicht unterstützt.

Verwende XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() aus der Jetpack XR-Laufzeitbibliothek, um zu prüfen, welcher Typ von Mischmodus verwendet wird, und nimm bei Bedarf Anpassungen vor.

Siehe auch