Android XR, Android प्लैटफ़ॉर्म और इकोसिस्टम का एक एक्सटेंशन है. Android XR SDK को इस तरह से डिज़ाइन किया गया है कि आप Android के जाने-पहचाने फ़्रेमवर्क और टूल का इस्तेमाल करके या OpenXR और WebXR जैसे ओपन स्टैंडर्ड का इस्तेमाल करके, XR ऐप्लिकेशन बना सकें. XR हेडसेट पर, Play Store से ऐसे सभी मोबाइल या बड़ी स्क्रीन वाले ऐप्लिकेशन इंस्टॉल किए जा सकेंगे जो इन हेडसेट के साथ काम करते हैं. काम करने से जुड़ी शर्तें देखें और जानें कि आपका ऐप्लिकेशन काम करता है या नहीं.
इस गाइड में इन विषयों के बारे में बताया गया है:
- डेवलपमेंट टूल और टेक्नोलॉजी चुनना
- Android XR के लिए ऐप्लिकेशन डिज़ाइन करना
- अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल को कॉन्फ़िगर करना
- ऐप्लिकेशन मेनिफ़ेस्ट के साथ काम करने से जुड़ी खास बातें
- Android XR के लिए अनुमतियों के बारे में जानकारी
- Android XR के लिए ऐप्लिकेशन की क्वालिटी पक्का करना
- Android XR के लिए अपने ऐप्लिकेशन को पैकेज करना और उसे डिस्ट्रिब्यूट करना
डेवलपमेंट टूल और टेक्नोलॉजी चुनना
Android XR के लिए ऐप्लिकेशन बनाते समय, इन डेवलपमेंट प्लैटफ़ॉर्म और टेक्नोलॉजी में से किसी एक को चुना जा सकता है:
Jetpack XR SDK
Jetpack XR SDK टूल में, Android XR Jetpack लाइब्रेरी शामिल होती हैं. इन्हें XR डिवाइसों की खास सुविधाओं का फ़ायदा पाने के लिए बनाया गया है. अगर आपको इनमें से कोई काम करना है, तो इस SDK टूल का इस्तेमाल करें:
- किसी मौजूदा Android मोबाइल या टैबलेट ऐप्लिकेशन को ऑप्टिमाइज़ करना या बेहतर बनाना
- Android Studio और Jetpack का इस्तेमाल करके, नया Android XR ऐप्लिकेशन बनाना
अगर आपको Android Jetpack का इस्तेमाल करके ऐप्लिकेशन डेवलप करने में पहले से ही आसानी हो रही है, तो Jetpack XR SDK टूल आपके लिए सबसे सही है. इसे उन फ़्रेमवर्क और लाइब्रेरी के साथ आसानी से इंटिग्रेट करने के लिए डिज़ाइन किया गया है. साथ ही, इससे आपको बेहतर XR अनुभव बनाने के लिए, मौजूदा जानकारी का इस्तेमाल करने में मदद मिलती है.
Jetpack XR SDK टूल का इस्तेमाल करके ऐप्लिकेशन बनाने के बारे में ज़्यादा जानें.
Unity
Unity Engine, रीयल-टाइम 3D डेवलपमेंट इंजन है. इसकी मदद से, कलाकार, डिज़ाइनर, और डेवलपर मिलकर ज़्यादा दिलचस्प और इंटरैक्टिव अनुभव बना सकते हैं. Unity के Android XR के साथ, आपको अपने बनाए गए 3D अनुभवों पर ज़्यादा कंट्रोल मिलता है. साथ ही, Unity के OpenXR के साथ काम करने की सुविधा और डेवलपर के लिए उपलब्ध पारिस्थितिक तंत्र का फ़ायदा भी मिलता है.
अगर आपके पास पहले से ही Unity की मदद से बनाया गया XR अनुभव है या आपको Unity डेवलपमेंट के बारे में पता है, तो इस विकल्प से शुरू करें.
Android XR के लिए Unity का इस्तेमाल करके ऐप्लिकेशन बनाने के बारे में ज़्यादा जानें.
OpenXR
OpenXR, रॉयल्टी-फ़्री और ओपन स्टैंडर्ड है. इसका इस्तेमाल, बेहतर परफ़ॉर्मेंस वाले और एक से ज़्यादा प्लैटफ़ॉर्म पर काम करने वाले XR अनुभव बनाने के लिए किया जा सकता है. Android XR, OpenXR 1.0 और 1.1 के साथ काम करता है. साथ ही, हम Android XR के लिए नए एक्सटेंशन जोड़कर, इसकी सुविधाओं को बेहतर बना रहे हैं. Android XR, ओपन स्टैंडर्ड पर आधारित है. इसलिए, OpenXR और Android के साथ काम करने वाले डेवलपमेंट टूल, Android XR के साथ भी काम करने चाहिए.
Android XR के लिए OpenXR की सहायता के बारे में ज़्यादा जानें.
WebXR
WebXR की मदद से, वेब पर इमर्सिव अनुभव बनाए जा सकते हैं. यह Android XR पर Chrome जैसे वेब ब्राउज़र में, VR और एआर डिवाइसों का ऐक्सेस देता है.
अगर आपको वेब के लिए XR अनुभव बनाना है या किसी वेब ऐप्लिकेशन में 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
(सिर्फ़ Jetpack XR SDK टूल के लिए)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(सिर्फ़ Jetpack XR SDK टूल के लिए)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(सिर्फ़ OpenXR के लिए)
XR_ACTIVITY_START_MODE_HOME_SPACE
(सिर्फ़ Jetpack XR SDK टूल का इस्तेमाल करके बनाए गए ऐप्लिकेशन)
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
(सिर्फ़ Jetpack XR SDK टूल का इस्तेमाल करके बनाए गए ऐप्लिकेशन)
अपने ऐप्लिकेशन को फ़ुल स्पेस में लॉन्च करने के लिए, इस स्टार्ट मोड का इस्तेमाल करें. फ़ुल स्पेस में, एक बार में सिर्फ़ एक ऐप्लिकेशन चलता है. इसमें स्पेस की कोई सीमा नहीं होती और अन्य सभी ऐप्लिकेशन छिपे रहते हैं.
<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>
XR ऐप्लिकेशन के लिए PackageManager की सुविधाएं
Google Play Store से ऐप्लिकेशन उपलब्ध कराने पर, ऐप्लिकेशन मेनिफ़ेस्ट में ज़रूरी हार्डवेयर या सॉफ़्टवेयर की सुविधाओं के बारे में बताया जा सकता है. uses-feature
एलिमेंट की मदद से, Play Store उपयोगकर्ताओं को दिखाए जाने वाले ऐप्लिकेशन को सही तरीके से फ़िल्टर कर सकता है.
नीचे दी गई सुविधाएं, खास तौर पर XR ऐप्लिकेशन के लिए हैं.
android.software.xr.immersive
अगर आपका ऐप्लिकेशन Android XR प्लैटफ़ॉर्म को टारगेट करता है और सिर्फ़ उन प्लैटफ़ॉर्म पर चलता है जो XR के साथ काम करते हैं, तो वैल्यू को 'सही' पर सेट करें. अगर आपके ऐप्लिकेशन में XR के लिए ऑप्टिमाइज़ की गई कुछ सुविधाएं हैं, लेकिन यह XR डिवाइसों के अलावा अन्य डिवाइसों पर भी चल सकता है, तो वैल्यू को 'गलत' पर सेट करें.
OpenXR या Unity से बनाए गए ऐप्लिकेशन के लिए, इस वैल्यू को 'सही' पर सेट करना ज़रूरी है.
<uses-feature android:name="android.software.xr.immersive" android:required="true" />
android.hardware.xr.input.controller
इस सुविधा से पता चलता है कि ऐप्लिकेशन को सही तरीके से काम करने के लिए, ज़्यादा सटीक और 6DoF (डिग्री ऑफ़ फ़्रीडम) वाले मोशन कंट्रोलर से इनपुट की ज़रूरत होती है. अगर आपका ऐप्लिकेशन, कंट्रोलर के साथ काम करता है और उनके बिना काम नहीं कर सकता, तो वैल्यू को 'सही' पर सेट करें. अगर आपका ऐप्लिकेशन कंट्रोलर के साथ काम करता है, लेकिन उनके बिना भी काम कर सकता है, तो इसे 'गलत' पर सेट करें.
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
इस फ़्लैग से पता चलता है कि ऐप्लिकेशन को सही तरीके से काम करने के लिए, हाथ की बेहतर क्वालिटी वाली ट्रैकिंग की ज़रूरत होती है. इसमें उपयोगकर्ता के हाथ के जोड़ों की पोज़िशन, ओरिएंटेशन, और वेग शामिल है. अगर आपका ऐप्लिकेशन, हाथ की गतिविधियों को ट्रैक करने की सुविधा के साथ काम करता है और इसके बिना काम नहीं कर सकता, तो वैल्यू को 'सही' पर सेट करें. अगर आपका ऐप्लिकेशन, हाथ की गतिविधियों को ट्रैक करने की सुविधा के साथ काम करता है, लेकिन इसके बिना भी काम कर सकता है, तो इसे 'गलत' पर सेट करें.
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
इस फ़्लैग से पता चलता है कि ऐप्लिकेशन को इनपुट ठीक से काम करने के लिए, बेहतर क्वालिटी वाली आंखों की ट्रैकिंग की ज़रूरत है. अगर आपका ऐप्लिकेशन इनपुट के लिए, आंखों की गति को ट्रैक करने की सुविधा के साथ काम करता है और इसके बिना काम नहीं कर सकता, तो वैल्यू को 'सही है' पर सेट करें. अगर आपका ऐप्लिकेशन इनपुट के लिए आंखों की गति को ट्रैक करने की सुविधा के साथ काम करता है, लेकिन इसके बिना भी काम कर सकता है, तो इसे 'गलत' पर सेट करें.
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
मोबाइल और बड़ी स्क्रीन वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन मेनिफ़ेस्ट के साथ काम करने से जुड़ी बातें
XR ऐप्लिकेशन के लिए PackageManager की सुविधाएं सेक्शन में बताया गया है कि ऐप्लिकेशन, ऐप्लिकेशन मेनिफ़ेस्ट में <uses-feature>
एलिमेंट में बताकर, किसी सुविधा का इस्तेमाल करते हैं. ऐसा हो सकता है कि टेलीफ़ोन या जीपीएस जैसी कुछ सुविधाएं, सभी डिवाइसों पर काम न करें.
ये सुविधाएं, 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 के लिए अनुमतियों के बारे में जानकारी
मोबाइल डिवाइसों और दूसरे फ़ॉर्म फ़ैक्टर पर मौजूद ऐप्लिकेशन की तरह ही, XR ऐप्लिकेशन की कुछ सुविधाओं के लिए, हो सकता है कि आपके ऐप्लिकेशन को AndroidManifest फ़ाइल में अनुमतियां बतानी पड़ें. जोखिम वाली अनुमतियों के मामले में, हो सकता है कि आपके ऐप्लिकेशन को रनटाइम की अनुमतियों का अनुरोध करना पड़े. ज़्यादा जानकारी के लिए, Android पर अनुमतियां और अनुमति के सबसे सही तरीके लेख पढ़ें.
एक्सआर सुविधाओं के लिए अनुमतियां
XR ऐप्लिकेशन, यहां दी गई अनुमतियों का इस्तेमाल कर सकते हैं. इस सेक्शन में मौजूद सभी अनुमतियों को खतरनाक अनुमतियां माना जाता है. इसलिए, आपको अपने ऐप्लिकेशन के मेनिफ़ेस्ट में इनके बारे में एलान करना होगा और रनटाइम के दौरान इनका अनुरोध करना होगा.
android.permission.EYE_TRACKING
इस्तेमाल के ऐसे उदाहरण जिनके लिए इस अनुमति की ज़रूरत होती है
अवतार बनाने के लिए, उपयोगकर्ता की आंखों के पोज़ और ओरिएंटेशन को दिखाना
Jetpack XR SDK की ऐसी सुविधाएं जिनके लिए इस अनुमति की ज़रूरत होती है
लागू नहीं
ऐसे OpenXR एक्सटेंशन जिनके लिए इस अनुमति की ज़रूरत होती है
Unity की ऐसी सुविधाएं जिनके लिए इस अनुमति की ज़रूरत होती है
Android XR: एआर फ़ेस
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
इस्तेमाल के ऐसे उदाहरण जिनके लिए इस अनुमति की ज़रूरत होती है
लाइट का अनुमान लगाना; मेश की सतहों पर पास-थ्रू प्रोजेक्ट करना; एनवायरमेंट में ट्रैक किए जा सकने वाले ऑब्जेक्ट के लिए रेकास्ट करना; प्लेन ट्रैकिंग; ऑब्जेक्ट ट्रैकिंग; ऑब्स्क्यूज़न और हिट टेस्टिंग के लिए डेप्थ के साथ काम करना; लगातार काम करने वाले ऐंकर.
Jetpack XR SDK की ऐसी सुविधाएं जिनके लिए इस अनुमति की ज़रूरत होती है
प्लेन ट्रैकिंग
हिट टेस्टिंग
ऐंकर पर्सिस्टेंस
OpenXR एक्सटेंशन, जिनके लिए इस अनुमति की ज़रूरत होती है
Unity की वे सुविधाएं जिनके लिए इस अनुमति की ज़रूरत होती है
Android XR ऐप्लिकेशन की क्वालिटी पक्का करना
यह पक्का करने के लिए कि आपका ऐप्लिकेशन लोगों को बेहतरीन अनुभव दे, Android XR ऐप्लिकेशन की क्वालिटी के लिए बने दिशा-निर्देशों को पढ़ें.
Android XR के लिए अपने ऐप्लिकेशन को पैकेज करना और उसे डिस्ट्रिब्यूट करना
Android XR, Google Play की मदद से एक्सआर हेडसेट पर कई तरह के ऐप्लिकेशन और अनुभव उपलब्ध कराता है. Android XR के लिए ऐप्लिकेशन को पैकेज करने और उन्हें उपलब्ध कराने के बारे में गाइड में, आपको Play Store और Play Console का इस्तेमाल शुरू करने, ट्रैक पब्लिश करने, Android ऐप्लिकेशन बंडल तैयार करने, और ऐप्लिकेशन के साइज़ से जुड़ी पाबंदियों के बारे में जानकारी मिलेगी.