स्पेस ऑडियो की सुविधाएं देखना

एक्सआर की सुविधा वाले डिवाइस
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
एक्सआर हेडसेट
वायर्ड एक्सआर ग्लास

डिवाइसों के हिसाब से, स्पेस से जुड़ी सुविधाओं में अंतर हो सकता है. साथ ही, जब उपयोगकर्ता आपके ऐप्लिकेशन या सिस्टम के साथ इंटरैक्ट करते हैं, तब इन सुविधाओं में बदलाव हो सकता है. इन्हें आपका ऐप्लिकेशन भी बदल सकता है. उदाहरण के लिए, होम स्पेस या फ़ुल स्पेस में जाना. समस्याओं से बचने के लिए, आपके ऐप्लिकेशन को यह जांच करनी होगी कि उसमें स्पेशल कैपेबिलिटी हैं या नहीं. इससे यह तय किया जा सकेगा कि मौजूदा एनवायरमेंट में कौनसे एपीआई काम करते हैं.

Jetpack Compose for XR का इस्तेमाल करके, स्पेस से जुड़ी सुविधाओं की जांच करना

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 पर, एक्सआर हेडसेट और वायर वाले एक्सआर चश्मों में अलग-अलग हार्डवेयर क्षमताएं होती हैं. खास तौर पर, डिसप्ले टाइप के मामले में. आपको अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) और रेंडर किए गए ऑब्जेक्ट के रंगों को अडजस्ट करना पड़ सकता है, ताकि वे ज़्यादा से ज़्यादा लोगों को दिखें. ऐसा हो सकता है कि डिसप्ले टाइप और डिवाइस के इस्तेमाल किए गए पसंदीदा ब्लेंड मोड की वजह से, ऐसा करना पड़े. DisplayBlendMode API, रेंडरिंग के लिए डिवाइस के ब्लेंड मोड की सुविधा देता है. इस एपीआई का इस्तेमाल करके यह पता लगाया जा सकता है कि वर्चुअल कॉन्टेंट को वास्तविक दुनिया में कैसे जोड़ा जाता है.

यहां ब्लेंड मोड के कुछ टाइप दिए गए हैं:

  • ADDITIVE: वर्चुअल कॉन्टेंट को असल दुनिया में जोड़ने के लिए, लाल, हरे, और नीले रंग के हर कॉम्पोनेंट के लिए पिक्सल वैल्यू जोड़ी जाती हैं. अल्फ़ा को अनदेखा किया जाता है और काले पिक्सल पारदर्शी दिखते हैं.
  • ALPHA_BLEND: वर्चुअल कॉन्टेंट को असल दुनिया में जोड़ा जाता है. इसके लिए, ऐल्फ़ा कॉम्पोनेंट के आधार पर पिक्सल वैल्यू को ऐल्फ़ा ब्लेंड किया जाता है.
  • NO_DISPLAY: इस डिवाइस पर, ब्लेंडिंग की सुविधा काम नहीं करती.

Jetpack XR Runtime लाइब्रेरी से XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() का इस्तेमाल करके, यह देखें कि किस तरह के ब्लेंड मोड का इस्तेमाल किया जा रहा है. साथ ही, ज़रूरत के मुताबिक बदलाव करें.

यह भी देखें: