Sprawdzanie możliwości dźwięku przestrzennego

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

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.

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ż