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

‫Android XR هو إضافة إلى نظام Android الأساسي ومنظومة 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 تم إنشاؤها للاستفادة من الإمكانات الفريدة لأجهزة الواقع المعزّز. ابدأ باستخدام حِزمة تطوير البرامج هذه إذا كنت تريد تنفيذ أيّ من الإجراءات التالية:

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

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

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

الوحدة

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

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

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

OpenXR

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

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

WebXR

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

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

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

تصميم مخصّص للواقع المُمتد

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

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

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

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

سمة PROPERTY_ACTIVITY_XR_START_MODE

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

هناك ثلاث قيم محتملة لهذا الحقل:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (حزمة تطوير البرامج (SDK) لـ Jetpack XR فقط)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (حزمة تطوير البرامج (SDK) لـ Jetpack XR فقط)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR فقط)

XR_ACTIVITY_START_MODE_HOME_SPACE

(التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (SDK) لـ Jetpack XR فقط)

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

<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

(التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (SDK) لـ Jetpack XR فقط)

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


<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>

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

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

الميزات التالية خاصة بتطبيقات الواقع المعزّز.

android.software.xr.immersive

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

يجب ضبط هذه القيمة على "صحيح" في التطبيقات التي تم إنشاؤها باستخدام OpenXR أو Unity.

<uses-feature android:name="android.software.xr.immersive" android:required="true" />

android.hardware.xr.input.controller

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

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

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

<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

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

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

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

كما هو موضّح في قسم ميزات PackageManager لتطبيقات الواقع المعزّز، تُعلِن التطبيقات عن استخدامها لميزة معيّنة من خلال تضمينها في عنصر <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

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

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

أذونات ميزات الواقع المعزّز

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

android.permission.EYE_TRACKING

حالات الاستخدام التي تتطلّب هذا الإذن

تمثيل وضع العين واتجاهها لدى المستخدم لأغراض الصور الرمزية

ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن

لا تنطبق

إضافات OpenXR التي تتطلّب هذا الإذن

XR_ANDROID_avatar_eyes

ميزات Unity التي تتطلّب هذا الإذن

‫Android XR: ميزة "الواقع المعزَّز للوجه"

android.permission.EYE_TRACKING_FINE

حالات الاستخدام التي تتطلّب هذا الإذن

إدخالات وتفاعلات نظرات العين

ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن

لا تنطبق

إضافات OpenXR التي تتطلّب هذا الإذن

XR_EXT_eye_gaze_interaction

ميزات Unity التي تتطلّب هذا الإذن

Eye Gaze Interaction

android.permission.FACE_TRACKING

حالات الاستخدام التي تتطلّب هذا الإذن

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

ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن

لا تنطبق

إضافات OpenXR التي تتطلّب هذا الإذن

XR_ANDROID_face_tracking

ميزات Unity التي تتطلّب هذا الإذن

XRFaceTrackingFeature

android.permission.HAND_TRACKING

حالات الاستخدام التي تتطلّب هذا الإذن

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

ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن

لا تنطبق

إضافات OpenXR التي تتطلّب هذا الإذن

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

ميزات Unity التي تتطلّب هذا الإذن

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

حالات الاستخدام التي تتطلّب هذا الإذن

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

ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن

تتبُّع الطائرة

اختبار النتائج

الاحتفاظ بحالة العناصر الأساسية

إضافات OpenXR التي تتطلّب هذا الإذن

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

ميزات Unity التي تتطلّب هذا الإذن

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

ضمان جودة تطبيق Android XR

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

تجميع تطبيقك وتوزيعه على أجهزة Android XR

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