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.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.level.full
إمكانية الاتصال
android.hardware.ipsec_tunnel_migration
إعداد الجهاز
إعداد شكل الجهاز
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
الإدخال
android.software.input_methods
الموقع الجغرافي
اتصال قصير المدى
إعدادات الأمان والأجهزة
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
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.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
ضبط إعدادات البرامج
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
الاتصالات الهاتفية
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.hardware.vr.headtracking
android.hardware.vr.high_performance
التطبيقات المصغَّرة
فهم الأذونات المطلوبة لتجربة الواقع المعزّز
تمامًا مثل التطبيقات على الأجهزة الجوّالة وأشكال الأجهزة الأخرى، قد تتطلّب بعض الوظائف التي تقدّمها تطبيقات الواقع المعزّز من تطبيقك تقديم بيان عن الأذونات في ملف AndroidManifest الخاص بالتطبيق. في حال الأذونات الخطيرة، قد يحتاج تطبيقك إلى طلب أذونات وقت التشغيل. يمكنك الاطّلاع على الأذونات على Android وأفضل الممارسات المتعلّقة بالأذونات للحصول على معلومات أكثر تفصيلاً.
أذونات ميزات الواقع المعزّز
يمكن أن تستخدم تطبيقات الواقع المعزّز الأذونات التالية. تُعدّ جميع الأذونات الواردة في هذا القسم أذونات خطيرة، لذا عليك الإفصاح عنها فيملف بيان تطبيقك وطلبها أثناء التشغيل.
android.permission.EYE_TRACKING
حالات الاستخدام التي تتطلّب هذا الإذن
تمثيل وضع العين واتجاهها لدى المستخدم لأغراض الصور الرمزية
ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن
لا تنطبق
إضافات OpenXR التي تتطلّب هذا الإذن
ميزات Unity التي تتطلّب هذا الإذن
Android XR: ميزة "الواقع المعزَّز للوجه"
android.permission.EYE_TRACKING_FINE
حالات الاستخدام التي تتطلّب هذا الإذن
إدخالات وتفاعلات نظرات العين
ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن
لا تنطبق
إضافات OpenXR التي تتطلّب هذا الإذن
ميزات Unity التي تتطلّب هذا الإذن
android.permission.FACE_TRACKING
حالات الاستخدام التي تتطلّب هذا الإذن
تتبُّع تعابير الوجه وعرضها
ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن
لا تنطبق
إضافات OpenXR التي تتطلّب هذا الإذن
ميزات Unity التي تتطلّب هذا الإذن
android.permission.HAND_TRACKING
حالات الاستخدام التي تتطلّب هذا الإذن
تتبُّع أوضاع مفاصل اليد والسعات الزاوية والخطية باستخدام تمثيل شبكة ليدي المستخدم
ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن
لا تنطبق
إضافات OpenXR التي تتطلّب هذا الإذن
ميزات Unity التي تتطلّب هذا الإذن
android.permission.SCENE_UNDERSTANDING
حالات الاستخدام التي تتطلّب هذا الإذن
تقدير الإضاءة، وعرض العناصر التي تظهر من خلال الأجسام على أسطح الشبكة، وتنفيذ عمليات بث الأشعة على الأجسام التي يمكن تتبُّعها في البيئة، وتتبُّع الأسطح، وتتبُّع الأجسام، والعمل مع العمق لاختبار حجب الرؤية واختبار الاصطدام، والمرتكزات الثابتة
ميزات حزمة تطوير البرامج (SDK) Jetpack XR التي تتطلّب هذا الإذن
تتبُّع الطائرة
اختبار النتائج
الاحتفاظ بحالة العناصر الأساسية
إضافات OpenXR التي تتطلّب هذا الإذن
ميزات Unity التي تتطلّب هذا الإذن
ضمان جودة تطبيق Android XR
لضمان أن يقدّم تطبيقك تجربة رائعة للمستخدم، راجِع إرشادات جودة تطبيقات Android XR.
تجميع تطبيقك وتوزيعه على أجهزة Android XR
يوفّر Android XR مجموعة كبيرة من التطبيقات والتجارب لأجهزة الواقع الممتد من خلال Google Play. في دليل حزم التطبيقات وتوزيعها على أجهزة Android XR، يمكنك الاطّلاع على معلومات عن بدء استخدام "متجر Play" وPlay Console ومسارات النشر وإعداد حِزم تطبيقات Android والقيود المفروضة على حجم التطبيقات.