एक्सआर के लिए Jetpack Compose

Android XR की स्पेशल क्षमताओं का फ़ायदा लेने वाले स्पेशल यूज़र इंटरफ़ेस (यूआई) लेआउट को डिक्लेरेटिव तरीके से बनाएं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
30 जुलाई, 2025 - - - 1.0.0-alpha05

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

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

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

ग्रूवी

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

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

Kotlin

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

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

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

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

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

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

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

वर्शन 1.0

वर्शन 1.0.0-alpha05

30 जुलाई, 2025

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

नई सुविधाएं

  • SubspaceComposable एनोटेशन क्लास को सार्वजनिक किया गया. (Ic2a34, b/399432430)
  • दो नए SpatialExternalSurface कंपोज़ेबल, जो 180 और 360 डिग्री के गोले दिखाते हैं. (I40ef2, b/391705799)
  • जोड़ा गया SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147)
  • SceneCoreEntity एपीआई जोड़ा गया है, ताकि SceneCore और Compose for XR के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) को बेहतर बनाया जा सके. (I50bb3, b/423020989)
  • बिना स्केल किए गए और GravityAligned सुविधा (I07359) के लिए, GravityAlignedsubspace API उपलब्ध कराया गया

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

  • SpatialDialog(), SpatialDialogProperties.dismissOnBack के प्रेस कॉन्फ़िगरेशन का पालन करेगा. (Ib453b, b/416797132)
  • minimumPanelDimension को Dimensions(0.1f, 0.1f, 0.1f) के नए डिफ़ॉल्ट डाइमेंशन साइज़ में अपडेट करें, क्योंकि इसे मीटर में दिखाया जाता है. (Ib852a)
  • सबस्पेस और ऑर्बिटर अब होम स्पेस में अपनी इंटरनल स्टेट बनाए रखेंगे. साथ ही, जब ऐप्लिकेशन बैकग्राउंड में होगा, तब भी ऐसा होगा. होम स्पेस मोड में, Subspace अब भी फ़ुल स्पेस मोड पर स्विच करने की तैयारी के लिए अपना सीन सेट अप करेगा. (I40317, b/416037751)
  • अब ऐप्लिकेशन के बैकग्राउंड में होने पर भी, SpatialDialogs अपनी स्थिति बनाए रखेंगे. (I6aa56)
  • ApplicationSubspace अब सिस्टम से सुझाए गए स्केल और पोज़िशन को इनहेरिट करेगा. (I4565f, b/418834194)
  • जब SubspaceComposable का इस्तेमाल, SubspaceComposable के कॉन्टेक्स्ट के बाहर किया जाता है, तो गड़बड़ी का बेहतर मैसेज जोड़ा गया है. साथ ही, गड़बड़ी को पहले ट्रिगर किया जाता है. (Iee2ae, b/416484684)
  • ExperimentalSubspaceVolumeApi को चेतावनी से बदलकर गड़बड़ी के तौर पर अपडेट किया गया है. ऐसा इसलिए किया गया है, क्योंकि कंपोज़ेबल एपीआई का गलत इस्तेमाल करने पर, अक्सर चेतावनियों को अनदेखा कर दिया जाता है. (I427aa, b/424864286)
  • सबस्पेस और ApplicationSubspace अब recommendedContentBoxInFullSpace की नीतियों के मुताबिक काम करेंगे. पहले, यह SpatialUser के फ़ील्ड ऑफ़ व्यू (कैमरे से दिख रहा व्यू) से सीमित था. (I41015, b/423074142)
  • SpatialElevation को अपडेट करें, ताकि हार्ड कोड किए गए साइज़ का इस्तेमाल न किया जा सके और कम से कम साइज़ का इस्तेमाल किया जा सके (I2dbe6, b/427785338)
  • SpatialAcitivityPanel को स्क्रिम करने के तरीके को अपडेट करें, ताकि मुख्य वैरिएबल में बदलाव होने पर अपडेट किया जा सके. (I0f64d, b/427999029)
  • VolumeConstraints.Unbounded को हटाकर, डिफ़ॉल्ट कंस्ट्रेंट वैल्यू को इसके बराबर पर सेट करें. (Ie24ec, b/407938414)
  • SpatialFeatheringSize अब सार्वजनिक नहीं है (I1c15b, b/399432430)
  • XR Placeable का नाम बदलकर SubspacePlaceable कर दिया गया है, ताकि इसे Compose के Placeable से अलग किया जा सके. (I74874)
  • Orbiter की सेटिंग हटाना और shouldRenderInNonSpatial को नए पैरामीटर के तौर पर जोड़ना. इसके अलावा, क्लास EdgeOffset को हटा दिया गया है और Orbiter() फ़ंक्शन को एक साथ लाने के लिए, orbiterOffsetType को नए पैरामीटर के तौर पर जोड़ा गया है. साथ ही, OrbiterEdge का नाम बदलकर ContentEdge कर दिया गया है. (Iebf3d)
  • Compose के Measurable टाइप से अलग करने के लिए, Measurable का नाम बदलकर SubspaceMeasurable कर दिया गया है. (I9726c)
  • MeasureResult का नाम बदलकर SubspaceMeasureResult (I9f34d) किया गया
  • setSubspaceContent एपीआई को हटा दिया गया है. अब Subspace कंपोज़ेबल के साथ Compose के setContent का इस्तेमाल किया जा सकता है. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy का नाम बदलकर SubspaceMeasurePolicy कर दिया गया है. (I37a9b, b/422553904)
  • SubspaceSemanticsInfo को सील किए गए इंटरफ़ेस में बदलें, क्योंकि डिफ़ॉल्ट सेटिंग के बिना सदस्यों को नहीं जोड़ा जा सकेगा. (I372f9, b/423704068)
  • SpatialExternalSurface दस्तावेज़ अपडेट किया गया. ContentSecurityLevel का नाम बदलकर SurfaceProtection कर दिया गया (I3c460, b/420982808)
  • मूवेबल मॉडिफ़ायर के लिए ओवरलोड किया गया कंस्ट्रक्टर उपलब्ध कराया गया है. इससे ऐंकरिंग की जा सकती है. (Ic0c70)
  • टूलटिप के लिए, पोज़िशन तय करने वाले और विकल्प जोड़े गए हैं. इससे डेवलपर यह कंट्रोल कर सकते हैं कि टूलटिप को ऐंकर के ऊपर, नीचे, बाईं ओर या दाईं ओर रखा जाए. केरेट के लिए एक ऐसा एपीआई जोड़ें जो शेप लेता हो, ताकि ज़्यादा कस्टम शेप दिए जा सकें. (Ie513c, b/374766087, b/418854637)
  • CoreEntity को PublishedApi के तौर पर हटाया गया (Ifee05)

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

  • उस समस्या को ठीक किया गया है जिसमें रेंडर करते समय SpatialDialog फ़्लैश होता था. (Ife73c, b/401619909)
  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें SpatialDialog, गतिविधि पैनल को डिम नहीं कर पाता था. (I8ca6c, b/367442109)
  • XR डायलॉग में कुछ कॉन्टेंट नहीं दिख रहा है (I17cd5, b/418062437)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से कॉन्टेंट पर क्लिक करने पर SpatialPopup बंद हो जाता था. (If262c, b/417245722)
  • resizable().movable() को चेन करने पर, SpatialPanel के नए साइज़ के हिसाब से ठीक से रीसाइज़ न होने की समस्या को ठीक किया गया है. (I02ee3, b/422264230)
  • SpatialComposeVideoPlayer में मेन्यू के साथ ओवरलैप हो रहा topBar ठीक किया गया (Id33bc, b/427168167)
  • कोने का तय किया गया रेडियस रेंडर नहीं हो रहा है (I975fe, b/428261830)

वर्शन 1.0.0-alpha04

7 मई, 2025

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

नई सुविधाएं

  • CompositionLocalConsumerSubspaceModifierNode इंटरफ़ेस जोड़ा गया है, ताकि कस्टम SubspaceModifier टाइप, कंपोज़िशन लोकल वैल्यू को ऐक्सेस कर सकें.
  • एक नया SpatialPanel एपीआई जोड़ा गया है, जो कंपोज़ AndroidView लागू करने के तरीके का पालन करता है. साथ ही, यह पिछले ViewBased SpatialPanel को बंद कर देता है.
  • VolumeConstraints.Unbounded कंपैनियन ऑब्जेक्ट जोड़ा गया है, जो अनबाउंडेड कंस्ट्रेंट को दिखाता है.
  • स्पैशलाइज़्ड ऑडियो सोर्स की अनुमति देने के लिए, SubspaceModifier.onPointSourceParams जोड़ा गया.
  • एक सार्वजनिक ApplicationSubspace जोड़ा गया है. इसमें VolumeConstraints को वैकल्पिक तौर पर जोड़ा गया है, ताकि 3D एरिया तय किया जा सके. इस एरिया में ऐप्लिकेशन, स्पेशल कॉन्टेंट रेंडर कर सकता है. डिफ़ॉल्ट रूप से, अगर कोई सीमा तय नहीं की जाती है, तो Subspace, चौड़ाई और ऊंचाई में SpatialUser के मौजूदा फ़ील्ड ऑफ़ व्यू से बंधा होगा. अगर फ़ील्ड ऑफ़ व्यू का पता नहीं लगाया जा सकता, तो उपयोगकर्ता कुछ शर्तें दे सकते हैं. ऐसा न होने पर, फ़ील्ड ऑफ़ व्यू की चौड़ाई और ऊंचाई की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.
  • SpatialExternalSurface को जोड़ा गया है. इसका इस्तेमाल, स्टीरियोस्कोपिक कॉन्टेंट को रेंडर करने के लिए किया जा सकता है. SpatialExternalSurface को मॉडिफ़ायर (अल्फ़ा को छोड़कर) और एज फ़ेदरिंग इफ़ेक्ट के साथ पसंद के मुताबिक बनाया जा सकता है.
  • नया pointerHoverIcon सबस्पेस मॉडिफ़ायर जोड़ा गया है. इसकी मदद से उपयोगकर्ता, स्पैटियल पॉइंटर के लिए आइकॉन सेट कर सकते हैं.

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

  • Jetpack XR के सभी पैकेज पर से RequiresApi(34) पाबंदी हटा दी गई है. यह पाबंदी ज़रूरी नहीं थी, क्योंकि फ़िलहाल Jetpack XR सिर्फ़ उन डिवाइसों पर उपलब्ध है जिनमें एपीआई लेवल 34 या उसके बाद का वर्शन है. (Iae0f8)
  • Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन का इस्तेमाल करना ज़रूरी है. (Idb6b5)
  • अब बैक हैंडलिंग की सुविधा, एम्बेड की गई गतिविधियों के बिना स्पैटियल पैनल पर काम करेगी. बैक हैंडलिंग की सुविधा काम करे, इसके लिए आपको Android मेनिफ़ेस्ट में android:enableOnBackInvokedCallback="true" तय करना होगा.
  • अब बैकहैंडलिंग की सुविधा, स्पैटियल डायलॉग पर काम करेगी. बैकहैंडलिंग की सुविधा काम करे, इसके लिए आपको Android मेनिफ़ेस्ट में android:enableOnBackInvokedCallback="true" तय करना होगा.
  • कॉम्पोज़िशन और व्यू पर आधारित SpatialPanel अब अपने कॉन्टेंट के हिसाब से खुद को अडजस्ट कर सकते हैं.
  • अब डेवलपर, SpatialElevationLevel की अपनी कस्टम वैल्यू सेट कर सकते हैं. वे पहले से तय किए गए लेवल तक ही सीमित नहीं हैं.
  • अब elevation पैरामीटर की मदद से, ऑर्बिटर के एलिवेशन लेवल को पसंद के मुताबिक बनाया जा सकता है.
  • अब सबस्पेस को डिफ़ॉल्ट रूप से, SpatialUser के फ़ील्ड ऑफ़ व्यू की चौड़ाई और ऊंचाई के हिसाब से तय किया जा सकता है. अगर फ़ील्ड ऑफ़ व्यू का पता नहीं लगाया जा सकता, तो फ़ील्ड ऑफ़ व्यू की चौड़ाई और ऊंचाई की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.
  • Movable मॉडिफ़ायर में नए कॉलबैक onMoveStart और onMoveEnd जोड़े गए. onMoveStart और onMoveEnd कॉलबैक तब कॉल किए जाते हैं, जब उपयोगकर्ता, मूव किए जा सकने वाले मॉडिफ़ायर के साथ कंपोज़ किए जा सकने वाले सबस्पेस को मूव करना शुरू और बंद करता है.
  • name पैरामीटर को SpatialRow और SpatialPanel जैसे स्पेशल एपीआई से हटा दिया गया है. स्पेशल कंपोज़ ट्री को डीबग करने के लिए, SubspaceModifier.testTag का इस्तेमाल करें.
  • SpatialPopup के ऐसे ओवरलोड को हटाया गया है जिसका इस्तेमाल नहीं किया जा सकता. इसमें सिर्फ़ spatialElevationLevel और content शामिल हैं. कृपया ऐसे इंटरफ़ेस का इस्तेमाल करें जिस पर onDimissRequest काम करता हो.
  • Movable मॉडिफ़ायर से onPoseChange कॉलबैक को हटा दिया गया है. इसके बजाय, onMove का इस्तेमाल करें.
  • अगर SubspaceModifiers को अलग कर दिया गया है या फ़िलहाल अलग किया जा रहा है, तो ये इफ़ेक्ट लागू नहीं होंगे.
  • मौजूदा SpatialRow API को SpatialRow और SpatialCurvedRow में बांट दिया गया है. अगर आपने पहले SpatialRow के curveRadius पैरामीटर का इस्तेमाल किया था, तो अब SpatialCurvedRow का इस्तेमाल करें. यह पैरामीटर भी उसी तरह काम करता है.
  • MainPanel और ActivityPanel को हाल ही के सिस्टम इमेज पर चलाने पर, अब टाइटल बार नहीं दिखते.
  • अल्फ़ा और स्केल मॉडिफ़ायर को अब स्टैक किया जा सकता है. साथ ही, ये मॉडिफ़ायर, लागू किए गए फ़ाइनल अल्फ़ा या स्केल वैल्यू के लिए अपनी वैल्यू को गुणा करेंगे.
  • onPoseChange मूवेबल मॉडिफ़ायर से मिलने वाले कॉलबैक को ऑप्टिमाइज़ किया गया है, ताकि पोज़ को आसानी से मूव किया जा सके.
  • अब मूव किए जा सकने वाले और साइज़ बदलने वाले मॉडिफ़ायर, मुख्य थ्रेड पर अपने कॉलबैक करेंगे. इससे यह पक्का किया जा सकेगा कि स्थिति में बदलाव होने पर, फिर से कंपोज़िशन ट्रिगर हो.
  • लेआउट और मेज़रमेंट फ़ेज़ में स्टेट ऑब्ज़र्वेशन जोड़ा गया है, ताकि यह पक्का किया जा सके कि SubspaceLayout में स्थिति बदलने पर, लेआउट फिर से ट्रिगर हो जाएगा.
  • मॉडिफ़ायर चेन को अपडेट करने की सुविधा को ऑप्टिमाइज़ किया गया है, ताकि मौजूदा मॉडिफ़ायर का बेहतर तरीके से फिर से इस्तेमाल किया जा सके.

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

  • SpatialDialog दिखने पर, स्क्रिमिंग बंद हो गई. (Ic4594)
  • मॉडिफ़ायर नोड के अलग होने पर किए गए रिलआउट के अनुरोधों को अब अनदेखा कर दिया जाएगा.
  • Movable और Resizable मॉडिफ़ायर की वजह से ट्रिगर होने वाले रीलआउट फ़ेज़ हटा दिए गए हैं.
  • MainPanel() कंपोज़ेबल में क्रैश होने की समस्या को ठीक किया गया है.यह समस्या तब होती थी, जब किसी डाइमेंशन को सीधे तौर पर या लेआउट की गिनती के दौरान शून्य पर सेट किया जाता था. उदाहरण के लिए, SpatialRow/SpatialColumn की गिनती. अब पैनल को छिपा दिया जाएगा. ध्यान दें कि यह फ़िक्स, लेआउट फ़ेज़ के दौरान होने वाली क्रैश की समस्या को ठीक करता है. उपयोगकर्ता के इंटरैक्शन के ज़रिए पैनल का साइज़ शून्य पर सेट करने की समस्या को अलग से ठीक किया जाएगा. छिपाए गए पैनल में यूज़र इंटरफ़ेस (यूआई) की सुविधाएं मौजूद नहीं हैं.
  • रीसाइज़ किए जा सकने वाले मॉडिफ़ायर से maintainAspectRatio से जुड़ी समस्या ठीक की गई. अब आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को बनाए रखा जाना चाहिए.
  • नेस्ट किए गए सबस्पेस से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह से, उन्हें एक फ़्रेम के लिए गलत तरीके से रखा जाता था.
  • उस समस्या को ठीक किया गया है जिसकी वजह से, कभी-कभी राउंड किए गए कोनों को तब लागू नहीं किया जाता था, जब उन्हें लागू किया जाना चाहिए था.
  • NestedSubspaces अब गलत जगह पर एक फ़्रेम के लिए नहीं दिखेगा.

वर्शन 1.0.0-alpha03

26 फ़रवरी, 2025

androidx.xr.compose:compose:1.0.0-alpha03 और androidx.xr.compose:compose-testing:1.0.0-alpha03 को पिछले ऐल्फ़ा वर्शन के बाद से, बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 1.0.0-alpha03 में ये कमिट शामिल हैं

वर्शन 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 के सभी एपीआई के लिए, रनटाइम में एपीआई 34 की ज़रूरत होती है.
  • Orbiter EdgeOffset.inner, EdgeOffset.outer, और EdgeOffset.overlap कंस्ट्रक्टर अब @Composable तरीके नहीं हैं. इसलिए, इनका इस्तेमाल कंपोज़ेबल नहीं होने वाले कॉन्टेक्स्ट में किया जा सकता है.
  • स्पेशल एलिवेशन लेवल को अपडेट करें, ताकि वे यूज़र एक्सपीरियंस की नई खास बातों से मेल खाएं.
  • SubspaceSemanticsInfo इंटरफ़ेस को MeasurableLayout में लागू करें.
  • SubspaceModifierElement का नाम बदलकर SubspaceModifierNodeElement कर दिया गया.

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

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

वर्शन 1.0.0-alpha01

12 दिसंबर, 2024

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

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

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

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

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

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

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

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

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

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

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

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