Możliwości przestrzenne mogą się zmieniać w zależności od tego, jak użytkownicy będą wchodzić w interakcje z aplikacją lub systemem, a mogą być nawet zmieniane przez samą aplikację – na przykład przez przejście do pokoju domowego lub pełnego pokoju. Aby uniknąć problemów, aplikacja musi sprawdzić, czy urządzenie obsługuje funkcje przestrzenne, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku.
Sprawdzanie możliwości przestrzennych za pomocą Jetpack Compose w przypadku XR
Jetpack Compose dla XR tworzy Composition Local do sprawdzania możliwości przestrzennych. Użyj tej opcji, aby sprawdzić, czy włączone są interfejs przestrzenny, dźwięk przestrzenny, środowiska, przesyłanie przezroczyste lub treści 3D.
Aby sprawdzić, czy są obecnie dostępne te funkcje przestrzenne: LocalSpatialCapabilities.current
isSpatialUiEnabled
: wskazuje, czy aplikacja może tworzyć elementy UI przestrzennego (np.SpatialPanel
).isContent3dEnabled
: wskazuje, czy aplikacja może tworzyć obiekty 3D.isAppEnvironmentEnabled
: wskazuje, czy aplikacja może skonfigurować środowisko.isPassthroughControlEnabled
: wskazuje, czy aplikacja może kontrolować stan przepuszczania.isSpatialAudioEnabled
: wskazuje, czy aplikacja może korzystać z dźwięku przestrzennego.
Ten przykład pokazuje, jak sprawdzić, czy interfejs przestrzenny jest włączony:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
Sprawdzanie możliwości przestrzennych za pomocą SceneCore
Jeśli używasz biblioteki SceneCore, musisz utworzyć sesję. Po utworzeniu sesji wywołaj metodę spatialCapabilities
sesji, aby zapytać, które funkcje przestrzenne są obecnie dostępne.
SPATIAL_CAPABILITY_3D_CONTENT
: aktywność może tworzyć treści 3D.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: aktywność może skonfigurować własne środowisko.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: aktywność może zawierać inną aktywność.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: aktywność może włączać lub wyłączać przepuszczanie.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: aktywność może używać dźwięku przestrzennego.SPATIAL_CAPABILITY_UI
: aktywność może być przestrzenna (np. dodanie panelu przestrzennego).
Możesz też subskrybować usługę połączenia zwrotnego addSpatialCapabilitiesChangedListener
, która powiadomi Cię, gdy funkcje przestrzenne ulegną zmianie.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.setPassthroughOpacityPreference(0f) } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT ) ) { // ... }
Zobacz również
- Tworzenie sesji
- Przejście z HSM na FSM
- Dodawanie środowisk przestrzennych do aplikacji
- Dodawanie modeli 3D do aplikacji