Mekansal özellikleri kontrol etme

Kullanıcılar uygulamanızla veya sistemle etkileşimde bulundukça uzamsal özellikler değişebilir. Hatta uygulamanız tarafından bile değiştirilebilir (ör. Ana Alan'a veya Tam Alan'a geçme). Sorun yaşanmaması 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 getSpatialCapabilities işlevini çağırın.

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

val xrSession = Session.create(this)

// Example 1: check if enabling passthrough mode is allowed
if (xrSession.getSpatialCapabilities().hasCapability(
       SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL)) {
   xrSession.spatialEnvironment.setPassthroughOpacityPreference(0f)
}
// Example 2: Multiple capability flags can be checked simultaneously:
if (xrSession.getSpatialCapabilities().hasCapability(
       SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and
               SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT)) {
   // ...
}

// Example 3: Create a spatialized panel if/when spatialization UI becomes available
xrSession.addSpatialCapabilitiesChangedListener((capabilities) -> {
  if (capabilities.hasCapability(SpatialCapabilities.SPATIAL_CAPABILITY_UI)){
Subspace{
   SpatialPanel(...)
      }
   }
});

Ayrıca bkz.