OpenXR के साथ काम करने वाले एक्सटेंशन या OpenXR के साथ काम करने वाले इंजन का इस्तेमाल करके ऐप्लिकेशन बनाना शुरू करने से पहले, यहां दी गई जानकारी पढ़ें और इन सेक्शन में दिए गए सभी टास्क पूरे करें. इससे यह पक्का किया जा सकेगा कि आपका ऐप्लिकेशन, इमर्सिव 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_FULL_SPACE_UNMANAGED(सिर्फ़ OpenXR)
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
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>
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>
<uses-native-library> OpenXR
OpenXR ऐप्लिकेशन को, नेटिव OpenXR लाइब्रेरी के इस्तेमाल की जानकारी देनी होगी, ताकि उसका रनटाइम सही तरीके से लोड हो सके. इस डिक्लेरेशन के बिना, रनटाइम लोड नहीं हो पाता.
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="false" />
<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 Store के ज़रिए ऐप्लिकेशन डिस्ट्रिब्यूट करते समय, ऐप्लिकेशन मेनिफ़ेस्ट में ज़रूरी हार्डवेयर या सॉफ़्टवेयर सुविधाओं के बारे में बताया जा सकता है. uses-feature एलिमेंट की मदद से, Play Store पर लोगों को दिखाए जाने वाले ऐप्लिकेशन को सही तरीके से फ़िल्टर किया जा सकता है.
नीचे दी गई सुविधाएं, XR की सुविधा वाले ऐप्लिकेशन के लिए खास तौर पर उपलब्ध हैं.
android.software.xr.api.openxr
Android XR प्लैटफ़ॉर्म को टारगेट करने वाले और OpenXR या Unity की मदद से बनाए गए ऐप्लिकेशन के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में यह सुविधा शामिल करना ज़रूरी है. साथ ही, android:required एट्रिब्यूट को true पर सेट करना ज़रूरी है.
Android XR Extensions Package for Unity के 1.0.0 या इसके बाद के वर्शन या Unity OpenXR: Android XR Package के 0.5.0-exp.1 या इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन को, ऐप्लिकेशन मेनिफ़ेस्ट में इस एलिमेंट को मैन्युअल तरीके से जोड़ने की ज़रूरत नहीं है. ये दोनों पैकेज, इस एलिमेंट को आपके ऐप्लिकेशन मेनिफ़ेस्ट में जोड़ देंगे.
डिवाइस इस सुविधा के लिए कोई वर्शन तय कर सकते हैं. इससे पता चलता है कि डिवाइस पर OpenXR का कौनसा वर्शन काम करता है. ऊपरी 16 बिट, मेजर नंबर को दिखाते हैं और निचले 16 बिट, माइनर नंबर को दिखाते हैं. उदाहरण के लिए, OpenXR वर्शन 1.1 के बारे में बताने के लिए, वैल्यू को "0x00010001" पर सेट किया जाएगा.
ऐप्लिकेशन, सुविधा के वर्शन का इस्तेमाल करके OpenXR के उस वर्शन के बारे में बता सकते हैं जो ऐप्लिकेशन के लिए ज़रूरी है. उदाहरण के लिए, अगर आपके ऐप्लिकेशन को OpenXR 1.1 वर्शन के साथ काम करने की सुविधा चाहिए, तो यह सुविधा घोषित करें:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
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" />
अगले चरण
आपने अपने ऐप्लिकेशन के मेनिफ़ेस्ट को कॉन्फ़िगर कर लिया है और ज़रूरी जानकारी देख ली है. अब OpenXR का इस्तेमाल करके ऐप्लिकेशन बनाने के तरीके जानें:
- OpenXR के साथ काम करने वाले एक्सटेंशन का इस्तेमाल करके बनाना
- इस्तेमाल किए जा सकने वाले इंजन की मदद से बनाना