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