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 obsługi funkcji przestrzennych za pomocą Jetpack Compose for XR
Jetpack Compose dla XR tworzy Composition Local do sprawdzania możliwości przestrzennych. Za pomocą tej opcji możesz sprawdzić, czy włączone są interfejs przestrzenny, dźwięk przestrzenny, środowiska, przepuszczanie 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 (na przykładSpatialPanel
).isContent3dEnabled
: określa, czy aplikacja może tworzyć obiekty 3D.isAppEnvironmentEnabled
: wskazuje, czy aplikacja może ustawić ś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
, 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 ustawić 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ć przekierowanie.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: aktywność może używać dźwięku przestrzennego.SPATIAL_CAPABILITY_UI
: aktywność może być wyświetlana w przestrzeni, np. przez 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