डिवाइसों के हिसाब से, स्पेशल सुविधाएं अलग-अलग हो सकती हैं. साथ ही, जब उपयोगकर्ता आपके ऐप्लिकेशन या सिस्टम से इंटरैक्ट करते हैं, तब ये सुविधाएं बदल सकती हैं. आपके ऐप्लिकेशन की मदद से भी इन्हें बदला जा सकता है. उदाहरण के लिए, होम स्पेस या फ़ुल स्पेस में जाना. समस्याओं से बचने के लिए, आपके ऐप्लिकेशन को स्पेशल सुविधाओं की जांच करनी होगी, ताकि यह पता चल सके कि मौजूदा एनवायरमेंट में कौनसा एपीआई काम करता है.
XR के लिए Jetpack Compose का इस्तेमाल करके, स्पेशल सुविधाओं की जांच करना
XR के लिए Jetpack Compose, स्पेशल सुविधाओं की जांच करने के लिए कंपोज़िशन लोकल बनाता है. इसका इस्तेमाल करके, यह जांच की जा सकती है कि स्पेशल यूज़र इंटरफ़ेस (यूआई), स्पेशल ऑडियो, एनवायरमेंट, पासथ्रू या 3D कॉन्टेंट चालू है या नहीं.
यह देखने के लिए कि फ़िलहाल, ये
स्पेशल सुविधाएं उपलब्ध हैं या नहीं, LocalSpatialCapabilities.current का इस्तेमाल किया जा सकता है:
isSpatialUiEnabled: इससे पता चलता है कि ऐप्लिकेशन, स्पेशल यूज़र इंटरफ़ेस (यूआई) एलिमेंट (उदाहरण के लिए,SpatialPanel) बना सकता है या नहीं.isContent3dEnabled: इससे पता चलता है कि ऐप्लिकेशन, 3D ऑब्जेक्ट बना सकता है या नहीं.isAppEnvironmentEnabled: इससे पता चलता है कि ऐप्लिकेशन, एनवायरमेंट सेट कर सकता है या नहीं.isPassthroughControlEnabled: इससे पता चलता है कि ऐप्लिकेशन, पासथ्रू की स्थिति को कंट्रोल कर सकता है या नहीं.isSpatialAudioEnabled: इससे पता चलता है कि ऐप्लिकेशन, स्पेशल ऑडियो का इस्तेमाल कर सकता है या नहीं.
यहां दिए गए उदाहरण में, यह जांच करने का तरीका बताया गया है कि स्पेशल यूज़र इंटरफ़ेस (यूआई) चालू है या नहीं:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
SceneCore का इस्तेमाल करके, स्पेशल सुविधाओं की जांच करना
SceneCore लाइब्रेरी का इस्तेमाल करते समय, आपको एक सेशन बनाना होगा. सेशन बन जाने के बाद, यह क्वेरी करने के लिए कि फ़िलहाल, कौनसी स्पेशल सुविधाएं उपलब्ध हैं, सेशन के
scene से spatialCapabilities का इस्तेमाल करें.
SPATIAL_3D_CONTENT: गतिविधि, 3D कॉन्टेंट बना सकती है.APP_ENVIRONMENT: गतिविधि, अपना एनवायरमेंट सेट कर सकती है.EMBED_ACTIVITY: गतिविधि, किसी दूसरी गतिविधि को स्पेशल तरीके से एम्बेड कर सकती है.PASSTHROUGH_CONTROL: गतिविधि, पासथ्रू को चालू या बंद कर सकती है.SPATIAL_AUDIO: गतिविधि, स्पेशल ऑडियो का इस्तेमाल कर सकती है.SPATIAL_UI: गतिविधि, खुद को स्पेशल बना सकती है. उदाहरण के लिए, स्पेशल पैनल जोड़ना.
आपके पास, कॉलबैक,
addSpatialCapabilitiesChangedListener की सदस्यता लेने का विकल्प भी होता है. इससे आपको तब सूचना मिलती है, जब स्पेशल
सुविधाएं बदल जाती हैं.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.contains( SpatialCapability.PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) && xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT) ) { // ... }
डिवाइस की डिसप्ले क्षमताओं की जांच करने के लिए, ब्लेंड मोड का इस्तेमाल करना
Android XR पर, XR हेडसेट और तार वाले XR स्मार्ट ग्लास में हार्डवेयर की अलग-अलग क्षमताएं होती हैं. खास तौर पर, उनके डिसप्ले टाइप के मामले में. आपको अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) और रेंडर किए गए ऑब्जेक्ट के रंगों को अडजस्ट करना पड़ सकता है, ताकि उन्हें ज़्यादा से ज़्यादा देखा जा सके. ऐसा हो सकता है कि डिसप्ले टाइप और डिवाइस के इस्तेमाल किए जा रहे पसंदीदा ब्लेंड मोड की वजह से करना पड़े. DisplayBlendMode एपीआई, रेंडरिंग के लिए डिवाइस की ब्लेंड मोड
क्षमता उपलब्ध कराता है. यह तय करने के लिए इस एपीआई का इस्तेमाल करें कि वर्चुअल कॉन्टेंट को असली दुनिया में कैसे जोड़ा जाता है.
ब्लेंड मोड के इन टाइप के बारे में जानें:
ADDITIVE: वर्चुअल कॉन्टेंट को असली दुनिया में जोड़ने के लिए, लाल, हरे, और नीले कॉम्पोनेंट में से हर एक के लिए पिक्सल वैल्यू जोड़ी जाती है. अल्फ़ा को अनदेखा किया जाता है. साथ ही, काले पिक्सल पारदर्शी दिखते हैं.ALPHA_BLEND: वर्चुअल कॉन्टेंट को असली दुनिया में जोड़ने के लिए, अल्फ़ा कॉम्पोनेंट के आधार पर पिक्सल वैल्यू को अल्फ़ा ब्लेंड किया जाता है.NO_DISPLAY: डिवाइस पर ब्लेंडिंग की सुविधा उपलब्ध नहीं है.
यह देखने के लिए कि किस तरह का ब्लेंड मोड इस्तेमाल किया जा रहा है, XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() from the
Jetpack XR Runtime library का इस्तेमाल करें. साथ ही, ज़रूरत के हिसाब से बदलाव करें.
इन्हें भी देखें
- सेशन बनाना
- एचएसएम और एफ़एसएम के बीच ट्रांज़िशन करना
- अपने ऐप्लिकेशन में स्पेशल एनवायरमेंट जोड़ना
- अपने ऐप्लिकेशन में 3D मॉडल जोड़ना