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:
isSpatialUiEnabled
: Gibt an, ob die Anwendung räumliche UI-Elemente (z. B.SpatialPanel
) erstellen darf.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 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.
SPATIAL_CAPABILITY_3D_CONTENT
: Mit der Aktivität können 3D-Inhalte erstellt werden.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: Die Aktivität kann eine eigene Umgebung festlegen.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: Die Aktivität kann eine andere Aktivität räumlich einbetten.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: Mit dieser Aktivität kann der Passthrough aktiviert oder deaktiviert werden.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: Für die Aktivität kann Spatial Audio verwendet werden.SPATIAL_CAPABILITY_UI
: Die Aktivität kann räumlich dargestellt werden, z.B. durch ein räumliches Steuerfeld.
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
- Sitzung erstellen
- Übergang zwischen HSM und FSM
- Ihrer App Umgebungen hinzufügen
- Ihrer App 3D‑Modelle hinzufügen