Geografische Funktionen prüfen

Die standortbezogenen Funktionen können sich ändern, wenn Nutzer mit Ihrer App oder dem System interagieren, oder sogar von Ihrer App selbst geändert werden, z. B. wenn Sie in den Home Space oder den Full Space wechseln. Um Probleme zu vermeiden, muss Ihre App prüfen, ob die erforderlichen Funktionen vorhanden sind, um zu ermitteln, welche APIs in der aktuellen Umgebung unterstützt werden.

Mit Jetpack Compose für XR nach räumlichen Funktionen suchen

Jetpack Compose for XR erstellt eine lokale Komposition, um die räumlichen Funktionen zu prüfen. Hier können Sie prüfen, ob die räumliche Benutzeroberfläche, räumlicher Audio, Umgebungen, Passthrough oder 3D-Inhalte aktiviert sind.

Mit LocalSpatialCapabilities.current können Sie prüfen, ob die folgenden geografischen Funktionen derzeit verfügbar sind:

Im folgenden Beispiel wird gezeigt, wie Sie prüfen, ob die visuelle Suche 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 du die SceneCore-Bibliothek verwendest, musst du eine Sitzung erstellen. Rufen Sie nach dem Erstellen der Sitzung getSpatialCapabilities auf, um zu erfahren, welche geografischen Funktionen derzeit verfügbar sind.

Sie können auch einen Rückruf abonnieren, addSpatialCapabilitiesChangedListener über den Sie benachrichtigt werden, wenn sich die standortbezogenen Funktionen geändert haben.

val xrSession = Session.create(this)

// Example 1: check if enabling passthrough mode is allowed
if (xrSession.getSpatialCapabilities().hasCapability(
       SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL)) {
   xrSession.spatialEnvironment.setPassthroughOpacityPreference(0f)
}
// Example 2: Multiple capability flags can be checked simultaneously:
if (xrSession.getSpatialCapabilities().hasCapability(
       SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and
               SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT)) {
   // ...
}

// Example 3: Create a spatialized panel if/when spatialization UI becomes available
xrSession.addSpatialCapabilitiesChangedListener((capabilities) -> {
  if (capabilities.hasCapability(SpatialCapabilities.SPATIAL_CAPABILITY_UI)){
Subspace{
   SpatialPanel(...)
      }
   }
});

Siehe auch