يمكن أن تتغيّر الإمكانات المكانية عندما يتفاعل المستخدمون مع تطبيقك أو النظام، أو يمكن أن يغيّرها تطبيقك نفسه، على سبيل المثال، الانتقال إلى "المساحة الرئيسية" أو "المساحة الكاملة". لتجنُّب حدوث مشاكل، يجب أن يتحقّق تطبيقك من الإمكانات المكانية لتحديد واجهات برمجة التطبيقات المتوافقة مع البيئة الحالية.
التحقّق من الإمكانات المكانية باستخدام Jetpack Compose للواقع الممتد
ينشئ Jetpack Compose لأجهزة الواقع المعزّز عنصر 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
في الجلسة للاستعلام عن
الإمكانات المكانية المتاحة حاليًا.
SPATIAL_CAPABILITY_3D_CONTENT
: يمكن أن ينشئ النشاط محتوًى ثلاثي الأبعاد.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: يمكن للنشاط ضبط بيئته الخاصة.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: يمكن أن يضمّن النشاط نشاطًا آخر مكانيًا.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: يمكن للنشاط تفعيل أو إيقاف ميزة "تمرير البيانات".SPATIAL_CAPABILITY_SPATIAL_AUDIO
: يمكن أن يستخدم النشاط ميزة "الصوت المكاني".SPATIAL_CAPABILITY_UI
: يمكن للنشاط أن يضيف تأثيرًا مكانيًا (مثل إضافة لوحة مكانية).
يمكنك أيضًا الاشتراك في خدمة تلقّي مكالمة تلقائية،
addSpatialCapabilitiesChangedListener
لإعلامك عند تغيُّر ميزات المعالجة العمودية.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.setPassthroughOpacityPreference(0f) } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT ) ) { // ... }
انظر أيضًا
- إنشاء جلسة
- الانتقال بين HSM وFSM
- إضافة بيئات مكانية إلى تطبيقك
- إضافة نماذج ثلاثية الأبعاد إلى تطبيقك