قابلیتهای فضایی میتواند با تعامل کاربران با برنامه یا سیستم شما تغییر کند، یا حتی میتواند توسط خود برنامه شما تغییر کند - به عنوان مثال، حرکت به فضای خانه یا فضای کامل. برای جلوگیری از مشکلات، برنامه شما باید قابلیتهای فضایی را بررسی کند تا مشخص کند کدام 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
در جلسه فراخوانی کنید تا پرس و جو کنید که کدام قابلیت های فضایی در حال حاضر در دسترس هستند.
-
SPATIAL_CAPABILITY_3D_CONTENT
: این فعالیت می تواند محتوای سه بعدی ایجاد کند. -
SPATIAL_CAPABILITY_APP_ENVIRONMENT
: فعالیت می تواند محیط خود را تنظیم کند. -
SPATIAL_CAPABILITY_EMBED_ACTIVITY
: این فعالیت می تواند فعالیت دیگری را به صورت فضایی جاسازی کند. -
SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: این فعالیت می تواند عبور را فعال یا غیرفعال کند. -
SPATIAL_CAPABILITY_SPATIAL_AUDIO
: این فعالیت میتواند از صدای مکانی استفاده کند. -
SPATIAL_CAPABILITY_UI
: فعالیت می تواند خود را فضایی کند، به عنوان مثال اضافه کردن یک پانل فضایی.
همچنین میتوانید مشترک شدن در یک پاسخ تماس بگیرید، 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(...)
}
}
});
همچنین ببینید
- یک جلسه ایجاد کنید
- انتقال بین HSM و FSM
- محیط های فضایی را به برنامه خود اضافه کنید
- مدل های سه بعدی را به برنامه خود اضافه کنید