Możliwości przestrzenne mogą się różnić w zależności od urządzenia i zmieniać się w miarę interakcji użytkowników z aplikacją lub systemem. Mogą one być nawet zmieniane przez samą aplikację, np. podczas przechodzenia do przestrzeni domowej lub pełnej. Aby uniknąć problemów, aplikacja musi sprawdzać możliwości przestrzenne, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku.
Sprawdzanie możliwości przestrzennych za pomocą Jetpack Compose na potrzeby XR
Jetpack Compose for XR tworzy lokalną kompozycję do sprawdzania możliwości przestrzennych. Sprawdź, czy włączone są interfejs przestrzenny, dźwięk przestrzenny, środowiska, widok passthrough lub treści 3D.
Za pomocą LocalSpatialCapabilities.current możesz sprawdzić, czy te funkcje przestrzenne są obecnie dostępne:
isSpatialUiEnabled: wskazuje, czy aplikacja może tworzyć przestrzenne elementy interfejsu (np.SpatialPanel).isContent3dEnabled: wskazuje, czy aplikacja może tworzyć obiekty 3D.isAppEnvironmentEnabled: wskazuje, czy aplikacja może ustawić środowisko.isPassthroughControlEnabled: wskazuje, czy aplikacja może kontrolować stan przekazywania.isSpatialAudioEnabled: wskazuje, czy aplikacja może korzystać z dźwięku przestrzennego.
Przykład poniżej 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 użyj polecenia spatialCapabilities z scene sesji, aby sprawdzić, które funkcje przestrzenne są obecnie dostępne.
SPATIAL_3D_CONTENT: aktywność może tworzyć treści 3D.APP_ENVIRONMENT: działanie może ustawić własne środowisko.EMBED_ACTIVITY: działanie może przestrzennie zawierać inne działanie.PASSTHROUGH_CONTROL: działanie może włączać lub wyłączać przekazywanie.SPATIAL_AUDIO: aktywność może korzystać z dźwięku przestrzennego.SPATIAL_UI: aktywność może się przestrzenizować (np. dodać panel przestrzenny).
Możesz też zasubskrybować wywołanie zwrotneaddSpatialCapabilitiesChangedListener, które powiadomi Cię o zmianach w funkcjach przestrzennych.
// 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) ) { // ... }
Sprawdzanie możliwości wyświetlania urządzenia za pomocą trybu mieszania
Na Androidzie XR gogle XR i przewodowe okulary XR mają różne możliwości sprzętowe, zwłaszcza jeśli chodzi o typ wyświetlacza. Może być konieczne dostosowanie kolorów interfejsu aplikacji i renderowanych obiektów, aby zmaksymalizować widoczność, na którą może wpływać typ wyświetlacza i preferowany tryb mieszania używany przez urządzenie. Interfejs DisplayBlendMode API udostępnia funkcję trybu mieszania urządzenia na potrzeby renderowania. Za pomocą tego interfejsu API możesz określić, w jaki sposób wirtualne treści są dodawane do świata rzeczywistego.
Oto kilka rodzajów trybów mieszania, o których warto pamiętać:
ADDITIVE: wirtualne treści są dodawane do rzeczywistego świata przez dodanie wartości pikseli dla każdego z komponentów: czerwonego, zielonego i niebieskiego. Kanał alfa jest ignorowany, a czarne piksele są przezroczyste.ALPHA_BLEND: wirtualne treści są dodawane do świata rzeczywistego przez mieszanie alfa wartości pikseli na podstawie komponentu alfa.NO_DISPLAY: mieszanie nie jest obsługiwane na tym urządzeniu.
Użyj XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() z biblioteki środowiska wykonawczego Jetpack XR, aby sprawdzić, jakiego typu tryb mieszania jest używany, i w razie potrzeby wprowadzić zmiany.
Zobacz również
- Tworzenie sesji
- Przechodzenie między HSM a FSM
- Dodawanie środowisk przestrzennych do aplikacji
- Dodawanie modeli 3D do aplikacji