بدء استخدام OpenXR في Android XR

أجهزة XR المعنيّة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة الواقع الممتد.
سماعات رأس بنظام الواقع الممتد
نظارات الواقع الممتد السلكية

قبل البدء في إنشاء تطبيقات باستخدام إضافات OpenXR المتوافقة أو محرك متوافق، راجِع المعلومات وأكمِل أي مهام في الأقسام التالية للتأكّد من إعداد تطبيقك لتطوير تجارب XR غامرة.

ضبط ملف البيان الخاص بتطبيقك

كما هو الحال مع مشاريع تطبيقات Android الأخرى، يجب أن يتضمّن تطبيق Android XR ملف AndroidManifest.xml يحتوي على إعدادات بيان محدّدة. يصف ملف البيان المعلومات الأساسية عن تطبيقك لأدوات إنشاء Android ونظام التشغيل Android وGoogle Play. راجِع دليل نظرة عامة على بيان التطبيق لمزيد من المعلومات.

بالنسبة إلى تطبيقات XR المميّزة، يجب أن يحتوي ملف البيان على العناصر والسمات التالية:

السمة PROPERTY_XR_ACTIVITY_START_MODE

تتيح السمة android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" للنظام معرفة أنّه يجب تشغيل نشاط معيّن في وضع محدّد عند بدء النشاط.

تتضمّن هذه السمة القيم التالية:

  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR فقط)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

يتم تشغيل التطبيقات التي تم إنشاؤها باستخدام OpenXR في "المساحة الكاملة" ويجب أن تستخدم XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED وضع البدء. تشير إشارات "المساحة الكاملة" غير المُدارة إلى أنّ تطبيق Android XR يستخدم OpenXR.


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

تشير السمة android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" إلى أنّه يجب تشغيل التطبيق بنوع معيّن من الحدود. يجب أن يحدّد تطبيقك XR_BOUNDARY_TYPE_LARGE ما إذا كان مصمَّمًا للسماح للمستخدمين بالتنقّل في مساحتهم المادية. لا يؤدي تحديد XR_BOUNDARY_TYPE_NO_RECOMMENDATION إلى تقديم أي اقتراحات بشأن نوع حدود الأمان، لذا يستخدم النظام النوع المستخدَم حاليًا.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>

<uses-native-library> OpenXR

يجب أن تحدّد تطبيقات OpenXR استخدام مكتبة OpenXR المجمّعة من رموز برمجية أصلية كي يتم تحميل وقت التشغيل بنجاح. بدون هذا البيان، يتعذّر تحميل وقت التشغيل.

<manifest ... >

    <application ... >

    <uses-native-library android:name="libopenxr.google.so" android:required="false" />

       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>
    </application>
</manifest>

ميزات PackageManager لتطبيقات الواقع الممتد

عند توزيع التطبيقات من خلال "متجر Google Play"، يمكنك تحديد ميزات الأجهزة أو البرامج المطلوبة في بيان التطبيق. يتيح العنصر uses-feature لـ &quot;متجر Play&quot; فلترة التطبيقات المعروضة للمستخدمين بشكل مناسب.

الميزات التالية خاصة بالتطبيقات التي تختلف عن تطبيقات XR.

android.software.xr.api.openxr

يجب أن تتضمّن التطبيقات التي تستهدف منصة Android XR وتم إنشاؤها باستخدام OpenXR أو Unity هذه الميزة في بيان التطبيق مع ضبط السمة android:required على true.

لا تحتاج التطبيقات التي تستخدم الإصدار 1.0.0 أو إصدارًا أحدث من حزمة إضافات Android XR لتطبيق Unity أو الإصدار 0.5.0-exp.1 أو إصدارًا أحدث من حزمة Unity OpenXR: Android XR إلى إضافة هذا العنصر يدويًا إلى ملف بيان التطبيق. ستُدرج هاتان الحزمتان هذا العنصر في بيان التطبيق نيابةً عنك.

يمكن أن تحدّد الأجهزة إصدارًا لهذه الميزة، ما يشير إلى أحدث إصدار من OpenXR يتوافق معه الجهاز. تمثّل الـ 16 بت الأعلى الرقم الرئيسي، وتمثّل الـ 16 بت الأدنى الرقم الثانوي. على سبيل المثال، لتحديد الإصدار 1.1 من OpenXR، سيتم ضبط القيمة على "0x00010001".

يمكن للتطبيقات استخدام إصدار الميزة للإشارة إلى الحد الأدنى من إصدار OpenXR الذي يتطلبه التطبيق. على سبيل المثال، إذا كان تطبيقك يتطلّب توفُّر الإصدار 1.1 من OpenXR، عليك تعريف الميزة التالية:

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

تشير هذه الميزة إلى أنّ التطبيق يتطلّب إدخال بيانات من وحدة تحكّم في الحركة عالية الدقة ذات 6 درجات حرية لكي يعمل بشكل صحيح. إذا كان تطبيقك يتوافق مع وحدات التحكّم ولا يمكنه العمل بدونها، اضبط القيمة على true. إذا كان تطبيقك يتوافق مع أدوات التحكّم ولكن يمكن تشغيله بدونها، اضبطه على false.

<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

تشير هذه العلامة إلى أنّ التطبيق يتطلّب تتبُّعًا عالي الدقة لحركة اليد ليعمل بشكل صحيح، بما في ذلك موضع المفاصل واتجاهها وسرعتها في يد المستخدم. إذا كان تطبيقك يتيح تتبُّع حركة اليد ولا يمكنه العمل بدون هذه الميزة، اضبط القيمة على true. إذا كان تطبيقك يتيح تتبُّع حركة اليد، ولكن يمكن تشغيله بدون هذه الميزة، اضبط القيمة على false.

<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

تشير هذه العلامة إلى أنّ التطبيق يتطلّب تتبُّعًا عالي الدقة لحركة العين من أجل إدخال البيانات لكي يعمل بشكل صحيح. إذا كان تطبيقك يتيح استخدام تتبُّع العين للإدخال ولا يمكنه العمل بدون هذه الميزة، اضبط القيمة على true. إذا كان تطبيقك يتيح استخدام ميزة تتبُّع العين لإدخال البيانات، ولكن يمكن تشغيله بدونها، اضبط القيمة على false.

<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

الخطوات التالية

بعد الانتهاء من ضبط ملف البيان الخاص بتطبيقك ومراجعة المعلومات المهمة، يمكنك استكشاف طرق يمكنك من خلالها إنشاء تطبيقات باستخدام OpenXR: