بعد تثبيت استوديو Android وضبط إعداداته، وإنشاء مشروع، وإعداد حزمة تطوير البرامج (SDK) لمنصة Jetpack XR، ستكون جاهزًا لبدء إنشاء تجارب غامرة للأجهزة مثل سماعات الرأس بنظام الواقع الممتد ونظارات بنظام الواقع الممتد السلكية.
قبل البدء في استكشاف جميع الطرق التي يمكنك من خلالها إنشاء التطبيق، يُرجى مراجعة المعلومات وإكمال أي مهام في الأقسام التالية للتأكّد من ضبط تطبيقك لتطوير الواقع الممتد الغامر.
ضبط ملف البيان الخاص بتطبيقك
كما هو الحال مع مشاريع تطبيقات Android الأخرى، يجب أن يتضمّن تطبيق Android XR ملف AndroidManifest.xml يتضمّن إعدادات بيان محدّدة. يصف ملف البيان المعلومات الأساسية عن تطبيقك لأدوات إصدار Android ونظام التشغيل Android وGoogle Play. لمزيد من المعلومات، يُرجى الاطّلاع على دليل نظرة عامة على بيان التطبيق.
بالنسبة إلى التطبيقات المميّزة في الواقع الممتد، يجب أن يحتوي ملف البيان على العناصر والسمات التالية:
سمة 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_HOME_SPACE
استخدِم وضع البدء هذا لتشغيل تطبيقك في Home Space. في Home Space، يمكن تشغيل تطبيقات متعددة جنبًا إلى جنب، ما يتيح للمستخدمين تنفيذ مهام متعددة. يمكن تشغيل أي تطبيق 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
استخدِم وضع البدء هذا لتشغيل تطبيقك في وضع "مساحات كاملة". في وضع "المساحة الكاملة"، يتم تشغيل تطبيق واحد فقط في كل مرة، بدون حدود للمساحة، ويتم إخفاء جميع التطبيقات الأخرى.
<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>
سمة PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
تشير السمة 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>
ميزات PackageManager لتطبيقات الواقع الممتد
عند
توزيع التطبيقات من خلال "متجر Google Play"،
يمكنك تحديد ميزات الأجهزة أو البرامج المطلوبة في بيان التطبيق. يسمح عنصر uses-feature لـ "متجر Google Play" بفلترة التطبيقات التي تظهر للمستخدمين بشكل مناسب.
تتوفّر الميزات التالية في التطبيقات المميّزة للواقع الممتد.
android.software.xr.api.spatial
يجب أن تتضمّن التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (SDK) لـ Jetpack XR هذه الميزة في ملف بيان التطبيق. تعتمد القيمة التي تضبطها لسمة
android:required على
قناة الإصدار المحدود لتطبيقك.
إذا كان تطبيقك يجمع بين ميزات أو محتوى مخصّص للواقع الممتد في حزمة 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.hardware.xr.input.controller
تشير هذه الميزة إلى أنّ التطبيق يتطلّب إدخالاً من وحدة تحكّم في الحركة عالية ال��قة بست درجات حرية (6DoF) ليعمل بشكل صحيح. إذا كان تطبيقك
يتوافق مع وحدات التحكّم ولا يمكنه العمل بدونها، اضبط القيمة على 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" />
android.hardware.xr.input.face_tracking
تشير هذه العلامة إلى أنّ التطبيق يتطلّب أجهزة تتبُّع تعابير الوجه ليعمل
بشكل صحيح. إذا كان تطبيقك يتيح تتبُّع تعابير الوجه ولا يمكنه العمل بدونه، اضبط القيمة على true. إذا كان تطبيقك يتيح تتبُّع تعابير الوجه، ولكن يمكنه العمل بدونه، اضبطه على false.
<!-- Sets android:required to true, indicating that your app can't function on devices without face tracking. -->
<uses-feature android:name="android.hardware.xr.input.face_tracking" android:required="true" />
ملاحظات حول توافق ملف بيان التطبيق مع تطبيقات الأجهزة الجوّالة والأجهزة ذات الشاشات الكبيرة
كما هو موضّح في قسم ميزات PackageManager لتطبيقات XR، تعلن التطبيقات
عن استخدامها لميزة معيّنة من خلال الإشارة إليها في عنصر <uses-feature>
في ملف بيان التطبيق. قد لا تتوافق بعض الميزات، مثل الاتصال الهاتفي أو نظام تحديد المواقع العالمي (GPS)، مع جميع الأجهزة.
للحصول على قائمة بالميزات المفعَّلة على جهاز معيّن، شغِّل adb
shell pm list features.
الميزات غير المتوافقة
يفلتر "متجر 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
التطبيقات المصغَّرة
الخطوات التالية
بعد الانتهاء من ضبط ملف بيان تطبيقك ومراجعة المعلومات المهمة، يمكنك استكشاف طرق إنشاء تجارب غامرة:
- نقل تطبيق Android إلى عالم ثلاثي الأبعاد باستخدام الواقع الممتد
- تطوير واجهة مستخدم مكانية باستخدام Jetpack Compose for XR
- تنفيذ التصميم المتعدد الأبعاد لواجهة المستخدم المكانية
- إضافة بيئات مكانية إلى تطبيقك
- إنشاء الكيانات والتحكّم فيها وإدارتها