يُعدّ 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 حالي على الأجهزة الجوّالة أو الأجهزة اللوحية
- إنشاء تطبيق جديد لأجهزة الواقع المعزّز (XR) على Android باستخدام "استوديو Android" وJetpack
إذا كنت معتادًا على تطوير التطبيقات باستخدام Android Jetpack، ستكون حزمة تطوير البرامج (SDK) لـ Jetpack XR مناسبة لك. تم تصميمه للدمج بسلاسة مع هذين الإطارَين البرمجيَين والمكتبتَين، ويتيح لك استخدام المعرفة الحالية لإنشاء تجارب واقع ممتزج غامرة.
مزيد من المعلومات حول تطوير التطبيقات باستخدام حزمة تطوير البرامج (SDK) لبرنامج Jetpack XR
الوحدة
Unity Engine هو محرّك تطوير ثلاثي الأبعاد في الوقت الفعلي يتيح للفنانين والمصمّمين والمطوّرين التعاون لإنشاء تجارب غامرة وتفاعلية. يمنحك دعم Unity لنظام Android XR مستوىً عالٍ من التحكّم في التجارب الثلاثية الأبعاد التي تُطوّرها، مع الاستفادة من دعم OpenXR ومنظومة المطوّرين المتكاملة التي أنشأتها Unity.
إذا كانت لديك تجربة واقع ممزوج تم إنشاؤها باستخدام Unity أو إذا كنت على دراية بتطوير Unity، ابدأ باستخدام هذا الخيار.
مزيد من المعلومات حول تطوير التطبيقات باستخدام Unity لنظام Android XR
OpenXR
OpenXR هو معيار مفتوح وبدون حقوق ملكية يمكن استخدامه ل إنشاء تجارب XR عالية الأداء ومتعددة المنصات. تتوافق منصة Android XR مع منصتي IDEVR 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 على الأجهزة الجوّالة أو الشاشات الكبيرة في "المساحة الرئيسية"، بالإضافة إلى تطبيقات الواقع المعزّز التي تم إنشاؤها باستخدام IDE 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
(التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (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>
<uses-native-library> OpenXR
(التطبيقات التي تم إنشاؤها باستخدام OpenXR فقط)
يجب أن تذكر تطبيقات OpenXR استخدام مكتبة OpenXR الأصلية لتحميل وقت التشغيل بنجاح. بدون هذا البيان، لن تتمكّن من تحميل وقت التشغيل.
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="true" />
<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
يجب أن تتضمّن التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (SDK) Jetpack XR هذه الميزة في ملف بيان التطبيق. تعتمد القيمة التي تحدّدها لسمة android:required
على مسار الإصدار لتطبيقك.
إذا كان تطبيقك يُجمِّع ميزات أو محتوى مخصّصًا للواقع المعزّز في ملف APK حالي
للأجهزة الجوّالة ويتم نشره على قناة الإصدار المحدود للأجهزة الجوّالة، عليك ضبط قيمة سمة android:required
على false
. إذا تم إنشاء تطبيقك خصيصًا
للأجهزة المزوّدة بتقنية الواقع المعزّز وتم نشره في قناة الإصدار المخصّصة
لأجهزة Android XR، عليك ضبط السمة android:required
على 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
.
بالنسبة إلى التطبيقات التي تستخدم الإصدار 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.
<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_COARSE
تمثيل وضع العين وحالتها واتجاهها لدى المستخدم، مثل الاستخدام مع الصور الرمزية استخدِم هذا الإذن عند الحاجة إلى بيانات تتبُّع العين ذات الدقة المنخفضة.
حزمة تطوير البرامج Jetpack XR SDK
لا تنطبق
إضافات OpenXR
ميزات Unity
android.permission.EYE_TRACKING_FINE
رصد حركة العين للاختيار والإدخال والتفاعلات
حزمة تطوير البرامج Jetpack XR SDK
لا تنطبق
إضافات OpenXR
ميزات Unity
android.permission.FACE_TRACKING
تتبُّع تعابير الوجه وعرضها
حزمة تطوير البرامج Jetpack XR SDK
لا تنطبق
إضافات OpenXR
ميزات Unity
android.permission.HAND_TRACKING
تتبُّع أوضاع مفاصل اليد والسعات الزاوية والخطية باستخدام تمثيل شبكة ليدي المستخدم
حزمة تطوير البرامج Jetpack XR SDK
إضافات OpenXR
ميزات Unity
android.permission.SCENE_UNDERSTANDING_COARSE
تقدير الإضاءة، وعرض العناصر التي تظهر من خلال الأجسام على مساحات الشبكة، وتنفيذ عمليات بث الأشعة على الأجسام التي يمكن تتبُّعها في البيئة، وتتبُّع المستويات، وتتبُّع الأجسام، والعناصر الثابتة
حزمة تطوير البرامج Jetpack XR SDK
إضافات OpenXR
ميزات Unity
android.permission.SCENE_UNDERSTANDING_FINE
نسيج العمق
حزمة تطوير البرامج Jetpack XR SDK
لا تنطبق
إضافات OpenXR
ميزات Unity
ضمان جودة تطبيقات Android XR
لضمان أن يقدّم تطبيقك تجربة رائعة للمستخدمين، راجِع إرشادات جودة التطبيقات المتوافقة مع Android XR.
تجميع تطبيقك وتوزيعه على أجهزة Android XR
يوفّر Android XR مجموعة كبيرة من التطبيقات والتجارب على سمّاعات الرأس التي تعمل بتقنيات الواقع الممتد من خلال Google Play. في دليل حزم التطبيقات وتوزيعها على أجهزة Android XR، يمكنك الاطّلاع على معلومات عن بدء استخدام "متجر Play" وPlay Console وقنوات النشر وإعداد حِزم تطبيقات Android والقيود المفروضة على حجم التطبيقات.