Mekansal özellikleri kontrol etme

Kullanıcılar uygulamanızla veya sistemle etkileşime geçtikçe uzamsal özellikler değişebilir. Hatta uygulamanız tarafından bile değiştirilebilir (ör. ana alana veya tam alana geçme). Sorun yaşamamak için uygulamanızın, mevcut ortamda hangi API'lerin desteklendiğini belirlemek üzere mekansal özellikleri kontrol etmesi gerekir.

XR için Jetpack Compose'u kullanarak uzamsal özellikleri kontrol etme

XR için Jetpack Compose, mekansal özellikleri kontrol etmek üzere yerel bir kompozisyon oluşturur. Uzamsal kullanıcı arayüzü, uzamsal ses, ortamlar, geçiş veya 3D içeriğin etkin olup olmadığını kontrol etmek için bu seçeneği kullanın.

Aşağıdaki mekansal özelliklerin şu anda kullanılıp kullanılamadığını kontrol etmek için LocalSpatialCapabilities.current simgesini kullanabilirsiniz:

Aşağıdaki örnekte, mekansal kullanıcı arayüzünün etkin olup olmadığının nasıl kontrol edileceği gösterilmektedir:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

SceneCore'u kullanarak mekansal özellikleri kontrol etme

SceneCore kitaplığını kullanırken bir oturum oluşturmanız gerekir. Oturum oluşturulduktan sonra, şu anda hangi mekansal özelliklerin kullanılabildiğini sorgulamak için oturumda spatialCapabilities işlevini çağırın.

Ayrıca, uzamsal özellikler değiştiğinde sizi bilgilendiren bir geri aramaya addSpatialCapabilitiesChangedListener abone olmayı da seçebilirsiniz.

// 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
    )
) {
    // ...
}

Ayrıca bkz.