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:
isSpatialUiEnabled
: Uygulamanın, mekansal kullanıcı arayüzü öğeleri (ör.SpatialPanel
) oluşturup oluşturamayacağını belirtir.isContent3dEnabled
: Uygulamanın 3D nesne oluşturup oluşturamayacağını belirtir.isAppEnvironmentEnabled
: Uygulamanın ortamı ayarlayabileceğini belirtir.isPassthroughControlEnabled
: Uygulamanın geçiş durumunu kontrol edip edemeyeceğini belirtir.isSpatialAudioEnabled
: Uygulamanın üç boyutlu ses kullanıp kullanamayacağını belirtir.
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.
SPATIAL_CAPABILITY_3D_CONTENT
: Etkinlik 3D içerik oluşturabilir.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: Etkinlik kendi ortamını ayarlayabilir.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: Etkinlik, başka bir etkinliği mekansal olarak yerleştirebilir.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: Etkinlik, aktarmayı etkinleştirebilir veya devre dışı bırakabilir.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: Etkinlikte üç boyutlu ses kullanılabilir.SPATIAL_CAPABILITY_UI
: Etkinlik, kendisini mekansallaştırabilir (ör. mekansal panel ekleyerek).
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.
- Bir oturum oluşturun
- HSM ile FSM arasında geçiş
- Uygulamanıza mekansal ortamlar ekleme
- Uygulamanıza 3D model ekleme