स्पेशल ऑडियो की सुविधाएं, अलग-अलग डिवाइसों पर अलग-अलग हो सकती हैं. साथ ही, जब उपयोगकर्ता आपके ऐप्लिकेशन या सिस्टम के साथ इंटरैक्ट करते हैं, तो ये सुविधाएं बदल सकती हैं. ऐप्लिकेशन खुद भी इन्हें बदल सकता है. उदाहरण के लिए, होम स्पेस या फ़ुल स्पेस में जाने पर. समस्याओं से बचने के लिए, आपके ऐप्लिकेशन को स्पेशल ऑडियो की सुविधाओं की जांच करनी होगी. इससे यह तय किया जा सकेगा कि मौजूदा एनवायरमेंट में कौनसे एपीआई काम करते हैं.
Jetpack Compose for XR का इस्तेमाल करके, स्पेशल सुविधाओं की उपलब्धता देखना
Jetpack Compose for XR, स्पेशल सुविधाओं की जांच करने के लिए एक Composition Local बनाता है. इसका इस्तेमाल करके देखें कि स्पेशल यूज़र इंटरफ़ेस (यूआई), स्पेशल ऑडियो, एनवायरमेंट, पासथ्रू या 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 पर, एक्सआर हेडसेट और वायर वाले एक्सआर के स्मार्ट ग्लास में अलग-अलग हार्डवेयर क्षमताएं होती हैं. खास तौर पर, उनके डिसप्ले टाइप के हिसाब से. आपको अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) और रेंडर किए गए ऑब्जेक्ट के रंगों को अडजस्ट करना पड़ सकता है, ताकि वे ज़्यादा से ज़्यादा दिखें. इस पर, डिसप्ले के टाइप और डिवाइस में इस्तेमाल किए गए ब्लेंड मोड का असर पड़ सकता है. DisplayBlendMode एपीआई, रेंडरिंग के लिए डिवाइस के ब्लेंड मोड की सुविधा देता है. इस एपीआई का इस्तेमाल करके, यह तय करें कि असल दुनिया में वर्चुअल कॉन्टेंट को कैसे जोड़ा जाए.
यहां ब्लेंड मोड के कुछ टाइप दिए गए हैं, जिनके बारे में आपको पता होना चाहिए:
ADDITIVE: लाल, हरे, और नीले कॉम्पोनेंट के लिए पिक्सल वैल्यू जोड़कर, असल दुनिया में वर्चुअल कॉन्टेंट जोड़ा जाता है. अल्फ़ा को अनदेखा कर दिया जाता है और काले पिक्सल पारदर्शी दिखते हैं.ALPHA_BLEND: वर्चुअल कॉन्टेंट को असल दुनिया में जोड़ा जाता है. इसके लिए, ऐल्फ़ा कॉम्पोनेंट के आधार पर पिक्सल वैल्यू को ऐल्फ़ा ब्लेंड किया जाता है.NO_DISPLAY: इस डिवाइस पर ब्लेंडिंग की सुविधा काम नहीं करती.
Jetpack XR रनटाइम लाइब्रेरी से XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() का इस्तेमाल करके, यह देखें कि किस तरह के ब्लेंड मोड का इस्तेमाल किया जा रहा है. साथ ही, ज़रूरत के हिसाब से बदलाव करें.
इन्हें भी देखें
- कोई सेशन बनाना
- एचएसएम और एफ़एसएम के बीच ट्रांज़िशन
- अपने ऐप्लिकेशन में स्पेशल एनवायरमेंट जोड़ना
- अपने ऐप्लिकेशन में 3D मॉडल जोड़ना