بعد تثبيت "استوديو Android" وإعداده وإنشاء مشروع وإعداد حزمة تطوير البرامج (SDK) لمنصة Jetpack XR، ستكون جاهزًا لبدء إنشاء تجارب غامرة.
قبل البدء في استكشاف جميع الطرق التي يمكنك من خلالها إنشاء التطبيقات، راجِع المعلومات وأكمِل أي مهام في الأقسام التالية للتأكّد من إعداد تطبيقك لتطوير تجارب 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(حزمة تطوير البرامج (SDK) لتقنية XR من Jetpack فقط) -
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED(حزمة تطوير البرامج (SDK) لتقنية XR من Jetpack فقط)
XR_ACTIVITY_START_MODE_HOME_SPACE
استخدِم وضع البدء هذا لتشغيل تطبيقك في "المساحة المشتركة". في "مساحة المنزل الذكي"، يمكن تشغيل تطبيقات متعددة جنبًا إلى جنب، ما يتيح للمستخدمين إنجاز مهام متعددة. يمكن تشغيل أي تطبيق 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
استخدِم وضع البدء هذا لتشغيل تطبيقك في "المساحة الكاملة". في "المساحة الكاملة"، لا يتم تشغيل سوى تطبيق واحد في كل مرة، بدون حدود للمساحة، ويتم إخفاء جميع التطبيقات الأخرى.
<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 لـ "متجر Play" فلترة التطبيقات المعروضة للمستخدمين بشكل مناسب.
الميزات التالية خاصة بالتطبيقات التي تختلف عن تطبيقات XR.
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.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)، مع جميع الأجهزة.
للحصول على قائمة بالميزات المفعَّلة على جهاز، شغِّل 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 إلى تجربة ثلاثية الأبعاد باستخدام XR
- تطوير واجهة مستخدم مكانية باستخدام Jetpack Compose للواقع الممتد (XR)
- تنفيذ Material Design لواجهة المستخدم المكانية
- إضافة بيئات مكانية إلى تطبيقك
- إنشاء الكيانات والتحكّم فيها وإدارتها