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