Android Studio इंस्टॉल और कॉन्फ़िगर करने, प्रोजेक्ट बनाने, और Jetpack XR SDK सेट अप करने के बाद, इमर्सिव अनुभव बनाना शुरू किया जा सकता है.
इमर्सिव एक्सआर ऐप्लिकेशन बनाने के सभी तरीके एक्सप्लोर करने से पहले, यहां दी गई जानकारी पढ़ें और इन सेक्शन में दिए गए सभी टास्क पूरे करें. इससे यह पक्का किया जा सकेगा कि आपका ऐप्लिकेशन, इमर्सिव एक्सआर ऐप्लिकेशन बनाने के लिए कॉन्फ़िगर किया गया है.
अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल को कॉन्फ़िगर करना
अन्य 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(सिर्फ़ Jetpack XR SDK के लिए)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED(सिर्फ़ Jetpack XR SDK के लिए)
XR_ACTIVITY_START_MODE_HOME_SPACE
होम स्पेस में अपना ऐप्लिकेशन लॉन्च करने के लिए, इस स्टार्ट मोड का इस्तेमाल करें. होम स्पेस में, एक साथ कई ऐप्लिकेशन चलाए जा सकते हैं. इससे उपयोगकर्ता एक साथ कई काम कर सकते हैं. होम स्पेस में, मोबाइल या बड़ी स्क्रीन वाले किसी भी Android ऐप्लिकेशन का इस्तेमाल किया जा सकता है. साथ ही, Jetpack XR SDK का इस्तेमाल करके बनाए गए 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 Store के ज़रिए ऐप्लिकेशन डिस्ट्रिब्यूट करते समय, ऐप्लिकेशन मेनिफ़ेस्ट में ज़रूरी हार्डवेयर या सॉफ़्टवेयर सुविधाओं के बारे में बताया जा सकता है. uses-feature एलिमेंट की मदद से, Play Store पर लोगों को दिखाए जाने वाले ऐप्लिकेशन को सही तरीके से फ़िल्टर किया जा सकता है.
नीचे दी गई सुविधाएं, 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" />
अगर आपका ऐप्लिकेशन, XR की सुविधा वाले डिवाइसों के लिए बनाया गया है और उसे 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" />
मोबाइल और बड़ी स्क्रीन वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन मेनिफ़ेस्ट की ज़रूरी शर्तें
XR ऐप्लिकेशन के लिए PackageManager की सुविधाएं सेक्शन में बताया गया है कि ऐप्लिकेशन, किसी सुविधा का इस्तेमाल करने का एलान करते हैं. इसके लिए, वे ऐप्लिकेशन मेनिफ़ेस्ट में <uses-feature> एलिमेंट का इस्तेमाल करते हैं. ऐसा हो सकता है कि टेलीफ़ोनी या जीपीएस जैसी कुछ सुविधाएं, सभी डिवाइसों के साथ काम न करें.
किसी डिवाइस के लिए चालू की गई सुविधाओं की सूची पाने के लिए, adb
shell pm list features चलाएं.
ये सुविधाएं, Google Play Books के साथ काम नहीं करतीं
Google Play Store, ऐप्लिकेशन को फ़िल्टर करता है. इससे यह पता चलता है कि किसी डिवाइस पर कौनसे ऐप्लिकेशन इंस्टॉल किए जा सकते हैं. इसके लिए, 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
विजेट
अगले चरण
अब, जबकि आपने अपने ऐप्लिकेशन के मेनिफ़ेस्ट को कॉन्फ़िगर कर लिया है और अहम जानकारी देख ली है, तो इमर्सिव अनुभव बनाने के तरीके जानें:
- XR की मदद से, अपने Android ऐप्लिकेशन को 3D में देखना
- XR के लिए Jetpack Compose की मदद से स्पेशल यूज़र इंटरफ़ेस (यूआई) डेवलप करना
- अपने स्पेशल यूज़र इंटरफ़ेस (यूआई) के लिए, Material Design लागू करना
- अपने ऐप्लिकेशन में स्पेशल एनवायरमेंट जोड़ना
- इकाइयां बनाना, उन्हें कंट्रोल करना, और मैनेज करना