XR के लिए Jetpack Compose

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

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

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-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-डेप्थ में थोड़ा पीछे धकेल दिया जाएगा.
    • SpatialPopUp: पैनल, ज़्यादा ऊंचाई वाला पॉप-अप दिखाने के लिए, z-डेप्थ में थोड़ा पीछे धकेल दिया जाएगा
    • 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 का इस्तेमाल किया जाता है जिसे काफ़ी आगे या पीछे ले जाया गया है, तो कॉन्टेंट गलत दिशा में चला जाएगा.