Mekansal özellikleri kontrol etme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazları için deneyimler geliştirmenize yardımcı olur.
XR Kulaklığı
Kablolu XR Gözlükleri

Uzamsal özellikler cihazlar arasında farklılık gösterebilir ve kullanıcılar uygulamanızla veya sistemle etkileşimde bulundukça değişebilir. Hatta uygulamanız tarafından da değiştirilebilirler. Örneğin, Ev Alanı'na veya Tam Ekran Alanı'na geçiş yapılabilir. Sorun yaşamamak için uygulamanızın, mevcut ortamda hangi API'lerin desteklendiğini belirlemek üzere uzamsal özellikleri kontrol etmesi gerekir.

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

XR için Jetpack Compose, uzamsal özellikleri kontrol etmek amacıyla bir CompositionLocal oluşturur. Üç boyutlu kullanıcı arayüzü, üç boyutlu ses, ortamlar, geçiş veya 3D içeriğin etkin olup olmadığını kontrol etmek için bunu kullanın.

Aşağıdaki uzamsal özelliklerin şu anda kullanılabilir olup olmadığını kontrol etmek için LocalSpatialCapabilities.current kullanabilirsiniz:

Aşağıdaki örnekte, üç boyutlu 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 kullanarak uzamsal özellikleri kontrol etme

SceneCore kitaplığını kullanırken bir oturum oluşturmanız gerekir. Oturum oluşturulduktan sonra, oturumun scene öğesinden spatialCapabilities kullanarak şu anda hangi uzamsal özelliklerin kullanılabildiğini sorgulayın.

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

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

Cihazın ekran özelliklerini kontrol etmek için karışım modunu kullanma

Android XR'da, XR kulaklıkları ve kablolu XR gözlükleri, özellikle ekran türleri açısından farklı donanım özelliklerine sahiptir. Görünürlüğü en üst düzeye çıkarmak için uygulamanızın kullanıcı arayüzünün ve oluşturulan nesnelerin renklerini uyarlamanız gerekebilir. Bu durum, cihazın kullandığı ekran türünden ve tercih edilen karışım modundan etkilenebilir. DisplayBlendMode API'si, oluşturma için cihazın karışım modu özelliğini sağlar. Sanal içeriğin gerçek dünyaya nasıl ekleneceğini belirlemek için bu API'yi kullanın.

Dikkat etmeniz gereken karışım modu türlerinden bazıları şunlardır:

  • ADDITIVE: Sanal içerik, kırmızı, yeşil ve mavi bileşenlerin her birinin piksel değerleri eklenerek gerçek dünyaya eklenir. Alfa yoksayılır ve siyah pikseller şeffaf görünür.
  • ALPHA_BLEND: Sanal içerik, alfa bileşenine göre piksel değerleri alfa harmanlanarak gerçek dünyaya eklenir.
  • NO_DISPLAY: Karıştırma, cihazda desteklenmiyor.

Kullanılan karışım modunun türünü kontrol etmek ve gerekli ayarlamaları yapmak için Jetpack XR Çalışma Zamanı kitaplığındaki XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() öğesini kullanın.

Aşağıdaki kaynakları da incelemenizi öneririz: