قابلیت‌های فضایی را بررسی کنید، قابلیت‌های فضایی را بررسی کنید

قابلیت‌های فضایی می‌تواند با تعامل کاربران با برنامه یا سیستم شما تغییر کند، یا حتی می‌تواند توسط خود برنامه شما تغییر کند - به عنوان مثال، حرکت به فضای خانه یا فضای کامل. برای جلوگیری از مشکلات، برنامه شما باید قابلیت‌های فضایی را بررسی کند تا مشخص کند کدام API در محیط فعلی پشتیبانی می‌شود.

قابلیت‌های فضایی را با استفاده از Jetpack Compose برای XR بررسی کنید

Jetpack Compose برای XR یک Composition Local برای بررسی قابلیت‌های فضایی ایجاد می‌کند. از این برای بررسی فعال بودن رابط کاربری فضایی، صدای مکانی، محیط‌ها، عبور یا محتوای سه بعدی استفاده کنید.

می توانید از LocalSpatialCapabilities.current برای بررسی اینکه آیا قابلیت های فضایی زیر در حال حاضر در دسترس هستند یا خیر استفاده کنید:

  • isSpatialUiEnabled : نشان می دهد که آیا برنامه ممکن است عناصر فضایی UI ایجاد کند (به عنوان مثال، SpatialPanel ).
  • isContent3dEnabled : نشان می دهد که آیا برنامه ممکن است اشیاء سه بعدی ایجاد کند یا خیر.
  • isAppEnvironmentEnabled : نشان می دهد که آیا برنامه ممکن است محیط را تنظیم کند یا خیر.
  • isPassthroughControlEnabled : نشان می دهد که آیا برنامه می تواند وضعیت عبور را کنترل کند یا خیر.
  • isSpatialAudioEnabled : نشان می دهد که آیا برنامه ممکن است از صدای مکانی استفاده کند یا خیر.

مثال زیر نشان می دهد که چگونه می توان بررسی کرد که آیا فضایی UI فعال است یا خیر.

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

قابلیت های فضایی را با استفاده از SceneCore بررسی کنید

هنگام استفاده از کتابخانه SceneCore، باید یک جلسه ایجاد کنید. پس از ایجاد جلسه، getSpatialCapabilities در جلسه فراخوانی کنید تا پرس و جو کنید که کدام قابلیت های فضایی در حال حاضر در دسترس هستند.

همچنین می‌توانید مشترک شدن در یک پاسخ تماس بگیرید، addSpatialCapabilitiesChangedListener که در صورت تغییر قابلیت‌های فضایی به شما اطلاع می‌دهد.

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(...)
      }
   }
});

همچنین ببینید