قابلیتهای مکانی میتوانند در دستگاههای مختلف متفاوت باشند و با تعامل کاربران با برنامه یا سیستم شما تغییر کنند. آنها حتی میتوانند توسط خود برنامه شما تغییر کنند - برای مثال، به Home Space یا Full Space منتقل شوند. برای جلوگیری از مشکلات، برنامه شما باید قابلیتهای مکانی را بررسی کند تا مشخص شود کدام APIها در محیط فعلی پشتیبانی میشوند.
بررسی قابلیتهای مکانی با استفاده از Jetpack Compose برای XR
Jetpack Compose for XR یک Composition Local برای بررسی قابلیتهای مکانی ایجاد میکند. از این برای بررسی فعال بودن رابط کاربری مکانی، صدای مکانی، محیطها، گذرگاه یا محتوای سهبعدی استفاده کنید.
میتوانید از LocalSpatialCapabilities.current برای بررسی اینکه آیا قابلیتهای مکانی زیر در حال حاضر در دسترس هستند یا خیر، استفاده کنید:
-
isSpatialUiEnabled: نشان میدهد که آیا برنامه میتواند عناصر رابط کاربری فضایی (مثلاًSpatialPanel) ایجاد کند یا خیر. -
isContent3dEnabled: نشان میدهد که آیا برنامه میتواند اشیاء سهبعدی ایجاد کند یا خیر. -
isAppEnvironmentEnabled: نشان میدهد که آیا برنامه میتواند محیط را تنظیم کند یا خیر. -
isPassthroughControlEnabled: نشان میدهد که آیا برنامه میتواند وضعیت عبور از گذرگاه را کنترل کند یا خیر. -
isSpatialAudioEnabled: نشان میدهد که آیا برنامه میتواند از صدای مکانی استفاده کند یا خیر.
مثال زیر نحوه بررسی فعال بودن رابط کاربری مکانی را نشان میدهد:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
بررسی قابلیتهای مکانی با استفاده از SceneCore
هنگام استفاده از کتابخانه SceneCore، باید یک جلسه ایجاد کنید. پس از ایجاد جلسه، از spatialCapabilities از scene جلسه برای پرس و جو در مورد قابلیتهای مکانی موجود در حال حاضر استفاده کنید.
-
SPATIAL_3D_CONTENT: این فعالیت میتواند محتوای سهبعدی ایجاد کند. -
APP_ENVIRONMENT: این فعالیت میتواند محیط خودش را تنظیم کند. -
EMBED_ACTIVITY: این فعالیت میتواند به صورت مکانی، فعالیت دیگری را جاسازی کند. -
PASSTHROUGH_CONTROL: این فعالیت میتواند عبور از گذرگاه را فعال یا غیرفعال کند. -
SPATIAL_AUDIO: این فعالیت میتواند از صدای مکانی استفاده کند. -
SPATIAL_UI: این فعالیت میتواند خودش را به صورت مکانی درآورد (برای مثال، یک پنل مکانی اضافه کند).
همچنین میتوانید در یک فراخوانی مجدد به نام addSpatialCapabilitiesChangedListener مشترک شوید که هنگام تغییر قابلیتهای مکانی به شما اطلاع میدهد.
// 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) ) { // ... }
از حالت ترکیبی برای بررسی قابلیتهای نمایش دستگاه استفاده کنید
در اندروید XR، هدستهای XR و عینکهای XR سیمی، قابلیتهای سختافزاری متفاوتی دارند، به خصوص در مورد نوع نمایشگر آنها. ممکن است لازم باشد رنگهای رابط کاربری برنامه و اشیاء رندر شده خود را برای به حداکثر رساندن قابلیت مشاهده تطبیق دهید، که این امر ممکن است تحت تأثیر نوع نمایشگر و حالت ترکیبی ترجیحی مورد استفاده توسط دستگاه باشد. API DisplayBlendMode قابلیت حالت ترکیبی دستگاه را برای رندر فراهم میکند. از این API برای تعیین نحوه اضافه شدن محتوای مجازی به دنیای واقعی استفاده کنید.
در اینجا برخی از انواع حالتهای ترکیبی که باید از آنها آگاه باشید، آورده شده است:
-
ADDITIVE: محتوای مجازی با اضافه کردن مقادیر پیکسل برای هر یک از اجزای قرمز، سبز و آبی به دنیای واقعی اضافه میشود. آلفا نادیده گرفته میشود و پیکسلهای سیاه شفاف به نظر میرسند. -
ALPHA_BLEND: محتوای مجازی با ترکیب آلفا و مقادیر پیکسل بر اساس مؤلفه آلفا به دنیای واقعی اضافه میشود. -
NO_DISPLAY: ترکیب در دستگاه پشتیبانی نمیشود.
از تابع XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() در کتابخانه Jetpack XR Runtime برای بررسی نوع حالت ترکیبی مورد استفاده و اعمال تنظیمات لازم استفاده کنید.
همچنین ببینید
- ایجاد یک جلسه
- گذار بین HSM و FSM
- محیطهای مکانی را به برنامه خود اضافه کنید
- مدلهای سهبعدی را به برنامه خود اضافه کنید