نظرة عامة على الإنشاء لأجهزة Android XR

‫Android XR هو امتداد لمنصة Android ومنظومتها المتكاملة. تم تصميم حزمة تطوير البرامج (SDK) لنظام Android XR لتتيح لك إنشاء تطبيقات الواقع الممتد باستخدام أُطر عمل وأدوات Android المألوفة أو باستخدام معايير مفتوحة، مثل OpenXR وWebXR. ستكون جميع تطبيقات الأجهزة الجوّالة أو تطبيقات الشاشات الكبيرة المتوافقة متاحة للتثبيت على سماعات الرأس بنظام الواقع الممتد من "متجر Play". راجِع اعتبارات التوافق لمعرفة ما إذا كان تطبيقك متوافقًا.

يشرح هذا الدليل الجوانب التالية:

  • اختيار أدوات وتقنيات التطوير
  • تصميم تطبيقات لنظام التشغيل Android XR
  • ضبط ملف بيان التطبيق
  • اعتبارات التوافق مع بيان التطبيق
  • التعرّف على أذونات Android XR
  • التحقّق من جودة تطبيقات Android XR
  • تغليف تطبيقك وتوزيعه على Android XR

اختيار أدوات وتقنيات التطوير

عند إنشاء تطبيق لنظام Android XR، يمكنك الاختيار من بين منصات وأدوات التطوير التالية:

Jetpack XR SDK

تحتوي حزمة تطوير البرامج (SDK) لمنصة Jetpack XR على مكتبات Jetpack لنظام التشغيل Android XR، وهي مصمّمة للاستفادة من الإمكانات الفريدة لأجهزة الواقع الممتد. استخدِم حزمة تطوير البرامج (SDK) هذه إذا كنت تريد تنفيذ أيّ من الإجراءات التالية:

  • تحسين تطبيق Android حالي على الأجهزة الجوّالة أو الأجهزة اللوحية
  • إنشاء تطبيق Android XR جديد باستخدام "استوديو Android" وJetpack

إذا كنت معتادًا على التطوير باستخدام Android Jetpack، ستناسبك حزمة تطوير البرامج (SDK) لمنصة Jetpack XR. وهي مصمَّمة لتتكامل بسلاسة مع هذه الأُطر والمكتبات، وتتيح لك استخدام معرفتك الحالية لإنشاء تجارب XR غامرة.

مزيد من المعلومات حول تطوير التطبيقات باستخدام حزمة Jetpack XR SDK

Unity

Unity Engine هو محرك تطوير ثلاثي الأبعاد في الوقت الفعلي يتيح للفنانين والمصمّمين والمطوّرين التعاون لإنشاء تجارب غامرة وتفاعلية. تتيح لك ميزة Android XR في Unity التحكّم بشكل كبير في تجارب الواقع الثلاثي الأبعاد التي تطوّرها، مع الاستفادة من توافق Unity مع OpenXR ومنظومة المطوّرين المتكاملة.

إذا سبق لك إنشاء تجربة واقع مختلط باستخدام Unity أو إذا كنت على دراية بتطوير Unity، يمكنك البدء بهذا الخيار.

مزيد من المعلومات حول تطوير التطبيقات باستخدام Unity لنظام Android XR

OpenXR

OpenXR هو معيار مفتوح ومجاني يمكن استخدامه لإنشاء تجارب واقع ممتد عالية الأداء ومتوافقة مع منصات متعددة. يتوافق Android XR مع الإصدارَين 1.0 و1.1 من OpenXR، ونعمل على توسيع المواصفات من خلال إضافات جديدة لنظام Android XR. بما أنّ Android XR يستند إلى معايير مفتوحة، من المفترض أن تكون أدوات التطوير المتوافقة مع OpenXR وAndroid متوافقة أيضًا مع Android XR.

مزيد من المعلومات حول توافق OpenXR مع Android XR

WebXR

تتيح لك WebXR إنشاء تجارب غامرة على الويب. ويتيح الوصول إلى أجهزة الواقع الافتراضي (VR) والواقع المعزّز (AR) في متصفّحات الويب المتوافقة، مثل Chrome على Android XR.

استخدِم هذا الخيار إذا كنت تريد إنشاء تجربة XR على الويب أو إذا كنت تريد إضافة إمكانات XR إلى تطبيق ويب. ستعمل تجارب WebXR الحالية أيضًا على Android XR.

مزيد من المعلومات حول إنشاء تطبيقات ويب باستخدام WebXR

تصميم تطبيقات الواقع الممتد

توسّع تقنية XR مساحة التصميم لتتجاوز الشاشات المسطّحة التقليدية، ما يتيح لك تصميم تجارب غامرة تجمع بين الواقع المادي والواقع الافتراضي. سواء كنت بصدد إنشاء تجربة جديدة تمامًا أو إضافة عناصر غامرة إلى تطبيق حالي، يمكن أن يساعدك دليل تصميم تطبيقات Android 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_HOME_SPACE (حزمة Jetpack XR SDK فقط)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (حزمة Jetpack XR SDK فقط)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR فقط)

XR_ACTIVITY_START_MODE_HOME_SPACE

(التطبيقات المصمَّمة باستخدام حزمة Jetpack XR SDK فقط)

استخدِم وضع البدء هذا لتشغيل تطبيقك في "مساحة المنزل". في "مساحة المنزل الذكي"، يمكن تشغيل تطبيقات متعددة جنبًا إلى جنب، ما يتيح للمستخدمين إنجاز مهام متعددة. يمكن تشغيل أي تطبيق Android على الأجهزة الجوّالة أو الشاشات الكبيرة في "مساحة المنزل"، بالإضافة إلى تطبيقات XR التي تم إنشاؤها باستخدام حزمة Jetpack XR SDK.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
       <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>

XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED

(التطبيقات المصمَّمة باستخدام حزمة Jetpack XR SDK فقط)

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


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
       <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>

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

(التطبيقات التي تم إنشاؤها باستخدام OpenXR فقط)

يتم تشغيل التطبيقات التي تم إنشاؤها باستخدام 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 استخدام مكتبة OpenXR الأصلية كي يتم تحميل وقت التشغيل بنجاح. بدون هذا البيان، سيتعذّر تحميل وقت التشغيل.

<manifest ... >

    <application ... >

    <uses-native-library andro id: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 لـ "متجر Play" فلترة التطبيقات بشكل مناسب المعروضة للمستخدمين.

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

android.software.xr.api.spatial

يجب أن تتضمّن التطبيقات التي تم إنشاؤها باستخدام Jetpack XR SDK هذه الميزة في بيان التطبيق. تعتمد القيمة التي تحدّدها للسمة android:required على قناة الإصدار لتطبيقك.

إذا كانت حِزم تطبيقك تتضمّن ميزات أو محتوى مخصّصًا لأجهزة XR في حزمة APK حالية للأجهزة الجوّالة وتم نشرها في قناة الإصدار المخصّصة للأجهزة الجوّالة، اضبط السمة android:required على false:

<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />

إذا كان تطبيقك مصمَّمًا خصيصًا للأجهزة المتوافقة مع الواقع الممتد وتم نشره في قناة الإصدار المحدود المخصّصة لتطبيقات Android XR، اضبط قيمة السمة android:required على true:

<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to true.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />

android.software.xr.api.openxr

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

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

يمكن أن تحدّد الأجهزة إصدارًا لهذه الميزة، ما يشير إلى أحدث إصدار من 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" />

اعتبارات التوافق مع ملف البيان لتطبيقات الأجهزة الجوّالة وتطبيقات الشاشات الكبيرة

كما هو موضّح في قسم ميزات PackageManager لتطبيقات XR، تعلن التطبيقات عن استخدامها لميزة معيّنة من خلال تعريفها في عنصر <uses-feature> في بيان التطبيق. قد لا تتوافق بعض الميزات، مثل خدمات الاتصال الهاتفي أو نظام تحديد المواقع العالمي (GPS)، مع جميع الأجهزة.

الميزات غير المتوافقة

تفلتر تطبيقات متجر Google Play المتاحة للتثبيت على جهاز باستخدام بيانات تعريف ميزات Android التالية.

مكونات الكاميرا

android.hardware.camera.ar

android.hardware.camera.autofocus

android.hardware.camera.capability.manual_post_processing

android.hardware.camera.capability.manual_sensor

android.hardware.camera.capability.raw

android.hardware.camera.concurrent

android.hardware.camera.external

android.hardware.camera.flash

android.hardware.camera.level.full

إمكانية الاتصال

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

إعداد الجهاز

android.hardware.ram.low

إعدادات شكل الجهاز

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

الإدخال

android.hardware.consumerir

android.software.input_methods

الموقع الجغرافي

android.hardware.location.gps

اتصال قصير المدى

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

إعدادات الأمان والأجهزة

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

android.hardware.identity_credential

android.hardware.identity_credential_direct_access

android.hardware.keystore.limited_use_key

android.hardware.keystore.single_use_key

android.hardware.strongbox_keystore

أجهزة الاستشعار

android.hardware.sensor.accelerometer_limited_axes

android.hardware.sensor.accelerometer_limited_axes_uncalibrated

android.hardware.sensor.ambient_temperature

android.hardware.sensor.barometer

android.hardware.sensor.gyroscope_limited_axes

android.hardware.sensor.gyroscope_limited_axes_uncalibrated

android.hardware.sensor.heading

android.hardware.sensor.heartrate

android.hardware.sensor.heartrate.ecg

android.hardware.sensor.hinge_angle

android.hardware.sensor.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

إعدادات البرامج

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

الاتصالات الهاتفية

android.hardware.telephony

android.hardware.telephony.calling

android.hardware.telephony.cdma

android.hardware.telephony.data

android.hardware.telephony.euicc

android.hardware.telephony.euicc.mep

android.hardware.telephony.gsm

android.hardware.telephony.ims

android.hardware.telephony.mbms

android.hardware.telephony.messaging

android.hardware.telephony.radio.access

android.hardware.telephony.subscription

android.software.sip

android.software.sip.voip

الواقع الافتراضي (قديم)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

التطبيقات المصغَّرة

android.software.app_widgets

التعرّف على أذونات الواقع الممتد (XR)

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

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

android.permission.EYE_TRACKING_COARSE

تمثّل هذه السمة وضع العين وحالتها واتجاهها، مثل استخدامها مع الصور الرمزية. استخدِم هذا الإذن عندما تحتاج إلى بيانات تتبُّع العين بدقة منخفضة.

Jetpack XR SDK

لا تنطبق

إضافات OpenXR

ميزات Unity

android.permission.EYE_TRACKING_FINE

تتبُّع حركة العين للاختيار والإدخال والتفاعلات

android.permission.FACE_TRACKING

تتبُّع تعابير الوجه وعرضها

Jetpack XR SDK

لا تنطبق

إضافات OpenXR

ميزات Unity

android.permission.HAND_TRACKING

تتبُّع أوضاع مفاصل اليدين والسرعات الزاوية والخطية، واستخدام تمثيل شبكي ليدَي المستخدم

android.permission.SCENE_UNDERSTANDING_COARSE

تقدير الإضاءة، وعرض ميزة "الرؤية المجسّمة" على أسطح الشبكة، وتنفيذ عمليات تتبُّع الأشعة على العناصر القابلة للتتبُّع في البيئة، وتتبُّع الأسطح المستوية، وتتبُّع العناصر، والعناصر الثابتة

android.permission.SCENE_UNDERSTANDING_FINE

نسيج العمق

Jetpack XR SDK

لا تنطبق

إضافات OpenXR

ميزات Unity

التحقّق من جودة تطبيقات Android XR

للتحقّق من أنّ تطبيقك يقدّم تجربة رائعة للمستخدمين، راجِع إرشادات جودة تطبيقات Android XR.

تعبئة تطبيقك وتوزيعه على Android XR

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


‫OpenXR™ وشعار OpenXR هما علامتان تجاريتان مملوكتان لشركة The Khronos Group Inc. ومسجّلتان كعلامة تجارية في الصين والاتحاد الأوروبي واليابان والمملكة المتحدة.