XR के लिए Jetpack Compose

Android XR की स्पेसियल सुविधाओं का फ़ायदा उठाने वाले स्पेसियल यूज़र इंटरफ़ेस (यूआई) लेआउट बनाएं.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
12 फ़रवरी, 2025 - - - 1.0.0-alpha02

डिपेंडेंसी का एलान करना

XR compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

ग्रूवी

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01")
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. किसी मौजूदा समस्या पर अपना वोट जोड़ने के लिए, स्टार बटन पर क्लिक करें.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

संस्करण 1.0

वर्शन 1.0.0-alpha02

12 फ़रवरी, 2025

androidx.xr.compose:compose:1.0.0-alpha02 और androidx.xr.compose:compose-testing:1.0.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये कमिट शामिल हैं.

नई सुविधाएं

  • स्पेसिएल डायलॉग चालू होने पर, गतिविधि पैनल अब अपने कॉन्टेंट को स्क्रिम कर सकता है.
  • Orbiter API का इस्तेमाल अब SubspaceComposable कॉन्टेक्स्ट में किया जा सकता है. साथ ही, यह ऑर्बिटर को अपने सबसे नज़दीकी SubspaceLayout-आधारित कॉम्पोज़ेबल पैरंट से अटैच करेगा.
  • कस्टम पोज़िशनिंग पर आधारित मॉडिफ़ायर की अनुमति देने के लिए, LayoutCoordinatesAwareModifierNode को पेश किया गया.
  • SubspaceModifier.Node में लाइफ़साइकल के अटैच/डिटैच करने के तरीके जोड़े गए.
  • मूव किए जा सकने वाले मॉडिफ़ायर में scaleWithDistance जोड़ा गया. scaleWithDistance चालू होने पर, जिस सबस्पेस एलिमेंट को दूसरी जगह ले जाया गया है वह बड़ा या छोटा हो जाएगा. यह उस स्केल को भी बनाए रखेगा जो गतिविधि शुरू होने से पहले था.

एपीआई में हुए बदलाव

  • SpatialCapabilities के पक्ष में SessionCallbackProvider को हटाया गया.

दूसरे बदलाव

  • minSDK को 24 पर सेट किया गया. सभी Jetpack XR API के लिए, रनटाइम के दौरान एपीआई 34 की ज़रूरत होती है.
  • Orbiter EdgeOffset.inner, EdgeOffset.outer, और EdgeOffset.overlap कन्स्ट्रक्टर अब @Composable तरीके नहीं हैं. इस वजह से, इनका इस्तेमाल ऐसे कॉन्टेक्स्ट में किया जा सकता है जो कंपोज़ नहीं किए जा सकते.
  • यूज़र एक्सपीरियंस (यूएक्स) की नई खास बातों के हिसाब से, स्पेसिएल एलिवेशन लेवल अपडेट करें.
  • MeasurableLayout में SubspaceSemanticsInfo इंटरफ़ेस लागू करें.
  • SubspaceModifierElement का नाम बदलकर SubspaceModifierNodeElement किया गया.

गड़बड़ियां ठीक की गईं

  • SubspaceModifier ऑर्डर करने की प्रोसेस को स्थिर करने के लिए सुधार. SubspaceModifier को ज़्यादा भरोसेमंद तरीके से काम करना चाहिए. ऑफ़सेट, घुमाएं, स्केल करें, मूव करें, और साइज़ बदलें मॉडिफ़ायर का इस्तेमाल अब किसी भी क्रम में किया जा सकता है.

वर्शन 1.0.0-alpha01

12 दिसंबर, 2024

androidx.xr.compose:compose-*1.0.0-alpha01 रिलीज़ हो गया है.

शुरुआती रिलीज़ की सुविधाएं

  • XR के लिए, Jetpack Compose की शुरुआती डेवलपर रिलीज़. XR में स्पेसिएल यूआई लेआउट बनाने के लिए, Compose के जाने-पहचाने कॉन्सेप्ट, जैसे कि पंक्तियों और कॉलम का इस्तेमाल करें. भले ही, आप किसी मौजूदा 2D ऐप्लिकेशन को XR में पोर्ट कर रहे हों या नए सिरे से कोई XR ऐप्लिकेशन बना रहे हों. इस लाइब्रेरी में, स्पेस पैनल और ऑर्बिटर जैसे स्पेसप्लेस और स्पेस कॉम्पोज़ेबल उपलब्ध हैं. इनकी मदद से, अपने मौजूदा 2D Compose या Views-आधारित यूज़र इंटरफ़ेस (यूआई) को स्पेस लेआउट में रखा जा सकता है. इसमें वॉल्यूम सबस्पेस कॉम्पोज़ेबल की सुविधा जोड़ी गई है. इसकी मदद से, अपने यूज़र इंटरफ़ेस (यूआई) के हिसाब से, 3D मॉडल जैसी SceneCore इकाइयां रखी जा सकती हैं. ज़्यादा जानकारी के लिए, डेवलपर गाइड पढ़ें:

    • Subspace: इस कॉम्पोज़ेबल को आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की हैरारकी में कहीं भी रखा जा सकता है. इससे, फ़ाइलों के बीच कॉन्टेक्स्ट को खोए बिना, 2D और स्पेसिएल यूआई के लेआउट बनाए जा सकते हैं. इससे, XR और अन्य फ़ॉर्म फ़ैक्टर के बीच मौजूदा ऐप्लिकेशन आर्किटेक्चर जैसी चीज़ों को शेयर करना आसान हो जाता है. इसके लिए, आपको अपने पूरे यूज़र इंटरफ़ेस (यूआई) ट्री में स्टेटस को होस्ट करने या अपने ऐप्लिकेशन को फिर से आर्किटेक्ट करने की ज़रूरत नहीं होती.

    • स्पेशल पैनल: स्पेशल पैनल, एक सबस्पेस कॉम्पोज़ेबल है. इसकी मदद से, ऐप्लिकेशन का कॉन्टेंट दिखाया जा सकता है. उदाहरण के लिए, स्पेशल पैनल में वीडियो प्लेबैक, स्टिल इमेज या कोई अन्य कॉन्टेंट दिखाया जा सकता है.

    • ऑर्बिटर: ऑर्बिटर, स्पेस वाला यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट होता है. इसे स्पेस पैनल से जोड़ने के लिए डिज़ाइन किया गया है. इसमें उस स्पेस पैनल से जुड़े नेविगेशन और संदर्भ के हिसाब से ऐक्शन आइटम होते हैं. उदाहरण के लिए, अगर आपने वीडियो कॉन्टेंट दिखाने के लिए स्पेस पैनल बनाया है, तो ऑर्बिटर में वीडियो चलाने के कंट्रोल जोड़े जा सकते हैं.

    • वॉल्यूम: अपने यूज़र इंटरफ़ेस (यूआई) के हिसाब से, SceneCore इकाइयों को रखें. जैसे, 3D मॉडल.

  • स्पेस लेआउट: SpatialRow, SpatialColumn, SpatialBox, और SpatialLayoutSpacer का इस्तेमाल करके, एक से ज़्यादा स्पेस पैनल बनाए जा सकते हैं और उन्हें स्पेस लेआउट में रखा जा सकता है. अपने लेआउट को पसंद के मुताबिक बनाने के लिए, SubspaceModifier का इस्तेमाल करें.

  • स्पेस के हिसाब से यूज़र इंटरफ़ेस (यूआई) के कॉम्पोनेंट: इन एलिमेंट का इस्तेमाल, आपके 2D यूआई में फिर से किया जा सकता है. साथ ही, इनके स्पेस के हिसाब से एट्रिब्यूट सिर्फ़ तब दिखेंगे, जब स्पेस की सुविधाएं चालू होंगी.

    • SpatialDialog: पैनल, ज़्यादा ऊंचाई वाला डायलॉग दिखाने के लिए, z-depth में थोड़ा पीछे धकेल दिया जाएगा.
    • SpatialPopUp: पैनल, ज़्यादा ऊंचाई वाला पॉप-अप दिखाने के लिए, z-depth में थोड़ा पीछे धकेल दिया जाएगा
    • SpatialElevation: SpatialElevationLevel को ऊंचाई जोड़ने के लिए सेट किया जा सकता है.
  • SpatialCapabilities: जब उपयोगकर्ता आपके ऐप्लिकेशन या सिस्टम से इंटरैक्ट करते हैं, तो स्पेस की सुविधाओं में बदलाव हो सकता है. इसके अलावा, आपके ऐप्लिकेशन से भी इन सुविधाओं में बदलाव किया जा सकता है. उदाहरण के लिए, होम स्पेस या फ़ुल स्पेस में जाना. समस्याओं से बचने के लिए, आपके ऐप्लिकेशन को LocalSpatialCapabilities.current की जांच करनी होगी. इससे यह पता चलेगा कि मौजूदा एनवायरमेंट में कौनसे एपीआई काम करते हैं. isSpatialUiEnabled: स्पेशल यूज़र इंटरफ़ेस (यूआई) एलिमेंट (जैसे, SpatialPanel) isContent3dEnabled: 3D ऑब्जेक्ट isAppEnvironmentEnabled: एनवायरमेंट isPassthroughControlEnabled: ऐप्लिकेशन, पासथ्रू स्टेटस को कंट्रोल कर सकता है या नहीं isSpatialAudioEnabled: स्पेशल ऑडियो

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • फ़िलहाल, XR के लिए Jetpack Compose का इस्तेमाल करने के लिए, कम से कम SDK टूल 30 वर्शन की ज़रूरत होती है. इस समस्या को हल करने के लिए, यहां दी गई मेनिफ़ेस्ट एंट्री <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> जोड़ें. इससे, ऐप्लिकेशन को 23 के मिनिमम SDK लेवल के साथ बनाया और चलाया जा सकेगा.
  • फ़िलहाल, Jetpack XR ऐप्लिकेशन के लिए AndroidManifest में android.permission.SCENE_UNDERSTANDING की अनुमति का अनुरोध करना ज़रूरी है.
  • जब कोई ऐप्लिकेशन अपने मेनिफ़ेस्ट में PROPERTY_XR_ACTIVITY_START_MODE प्रॉपर्टी का इस्तेमाल करके, सीधे फ़ुल स्पेस में लॉन्च होता है, तो ऐक्टिविटी/ऐप्लिकेशन शुरू में होम स्पेस में खुलते हैं. इसके बाद, वे फ़ुल स्पेस में ट्रांज़िशन करते हैं.
  • वॉल्यूम कॉम्पोज़ेबल में मौजूद glTF, शुरुआत में गलत जगह पर फ़्लिकर कर सकते हैं.
  • अगर किसी ऐसे पैनल में SpatialDialog का इस्तेमाल किया जाता है जिसे काफ़ी आगे या पीछे ले जाया गया है, तो कॉन्टेंट गलत दिशा में चला जाएगा.