قد تختلف إمكانات المساحة حسب الأجهزة، وقد تتغيّر أثناء تفاعل المستخدمين مع تطبيقك أو النظام. ويمكن أن يغيّر التطبيق نفسه هذه الحالة، مثلاً، عند الانتقال إلى "مساحة العمل" أو "المساحة الكاملة". لتجنُّب حدوث مشاكل، يجب أن يتحقّق تطبيقك من توفّر إمكانات مكانية لتحديد واجهات برمجة التطبيقات المتوافقة مع البيئة الحالية.
التحقّق من إمكانات التفاعل المكاني باستخدام Jetpack Compose للواقع الممتد
توفّر 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) ) { // ... }
استخدام وضع المزج للتحقّق من إمكانات عرض الجهاز
على أجهزة Android XR، تتفاوت إمكانات الأجهزة في سمّاعات الرأس والنظّارات الذكية السلكية بنظام الواقع الممتد، خاصةً فيما يتعلّق بنوع الشاشة. قد تحتاج إلى تعديل ألوان واجهة المستخدم في تطبيقك والعناصر المعروضة لتحقيق أقصى قدر من الوضوح، وهو ما قد يتأثر بنوع الشاشة ووضع المزج المفضّل الذي يستخدمه الجهاز. توفّر واجهة برمجة التطبيقات DisplayBlendMode إمكانية عرض وضع المزج على الجهاز. استخدِم واجهة برمجة التطبيقات هذه لتحديد كيفية إضافة المحتوى الافتراضي إلى العالم الحقيقي.
في ما يلي بعض أنواع أوضاع المزج التي يجب معرفتها:
ADDITIVE: تتم إضافة المحتوى الافتراضي إلى العالم الحقيقي من خلال إضافة قيم البكسل لكل مكوّن من مكوّنات الأحمر والأخضر والأزرق. يتم تجاهل قناة ألفا، وتظهر وحدات البكسل السوداء بشكل شفاف.ALPHA_BLEND: تتم إضافة المحتوى الافتراضي إلى العالم الحقيقي من خلال دمج قيم البكسل استنادًا إلى مكوّن Alpha.NO_DISPLAY: لا يمكن دمج الصور على الجهاز.
استخدِم XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() من
مكتبة Jetpack XR Runtime للتحقّق من نوع وضع المزج المستخدَم
وإجراء التعديلات حسب الحاجة.
انظر أيضًا
- إنشاء جلسة
- الانتقال بين HSM وFSM
- إضافة بيئات مكانية إلى تطبيقك
- إضافة تصاميم ثلاثية الأبعاد إلى تطبيقك