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

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

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

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

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

Groovy

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

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

Kotlin

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

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

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

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

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

नई समस्या दर्ज करने का तरीका

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

वर्शन 1.0

वर्शन 1.0.0-alpha07

24 सितंबर, 2025

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

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

  • SpatialMainPanel के लिए बेहतर KDocs. (I27b70, b/444467891)
  • SpatialArrangement को इसलिए पेश किया गया है, ताकि बच्चों को 3D लेआउट में मुख्य ऐक्सिस के साथ व्यवस्थित किया जा सके. जैसे, SpatialRow और SpatialColumn. इस नए एपीआई में, 2D Compose की तरह ही लेआउट के विकल्प मिलते हैं. जैसे, Start, End, Center, SpaceBetween, SpaceAround, और SpaceEvenly. साथ ही, इसमें एलटीआर और आरटीएल, दोनों तरह के लेआउट का इस्तेमाल किया जा सकता है. (I7db38, b/436289959)
  • SubspaceModifier.Node के लिए एक बुनियादी इंटरफ़ेस जोड़ा गया है, ताकि एक्सटेंशन इंटरफ़ेस की टाइप सुरक्षा और इस्तेमाल को बेहतर बनाया जा सके. जैसे:
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (internal) (Iede00, b/440599394, b/440599394)
  • Unrestrict SpatialExternalSurface (I33315, b/439646773)
  • Subspace कंपोज़ेबल में SubspaceModifier को शामिल किया गया है. साथ ही, कंस्ट्रेंट पैरामीटर को SubspaceModifier से बदलकर, साइज़ से जुड़े SubspaceModifiers का इस्तेमाल किया गया है. अगर allowUnboundedSubspace की वैल्यू 'सही है' पर सेट है, तो सबस्पेस में अब भी असीमित कंस्ट्रेंट हो सकते हैं. (Ib06e6, b/433331675)
  • अब SubspaceModifiers को बंद किया जा रहा है, क्योंकि DragPolicy() और ResizePolicy(), SpatialPanel और SpatialExternalSurface एपीआई (I397bf, b/437924639) का हिस्सा हैं
  • स्पेशल लेआउट में LayoutDirection के लिए सहायता जोड़ी गई. SpatialAlignment का इस्तेमाल करके कंपोज़ किए जा सकने वाले लेआउट, अब एलटीआर और आरटीएल, दोनों कॉन्टेक्स्ट में एलिमेंट को सही जगह पर रखेंगे. (I964bb, b/436300273)
  • Panel API में Resizable और Movable पैरामीटर जोड़ें, ताकि यह पक्का किया जा सके कि इन व्यवहारों को सिर्फ़ उन कंटेनर पर लागू किया जा सकता है जिनके साथ ये काम करते हैं. (Id491c)
  • sizeIn, widthIn, heightIn, depthIn SubspaceModifiers एट्रिब्यूट जोड़े गए हैं. इनकी मदद से, चौड़ाई, ऊंचाई, और गहराई के लिए कम से कम और ज़्यादा से ज़्यादा सीमाएं सेट की जा सकती हैं. (I1af09, b/433330761)

वर्शन 1.0.0-alpha06

13 अगस्त, 2025

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

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

  • लाइफ़साइकल के मालिक के बंद होने पर, ComposeXrOwnerLocals को फिर से बनाएं. (9123ce1)

वर्शन 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)
  • बिना स्केल किए गए GravityAlignedsubspace और GravityAligned सुविधा (I07359) के लिए एपीआई उपलब्ध कराया गया

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

  • 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)
  • Subspace कंपोज़ेबल के साथ Compose के setContent का इस्तेमाल करने के लिए, setSubspaceContent API को हटा दिया गया है. (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 कॉलबैक तब कॉल किए जाते हैं, जब उपयोगकर्ता, movable मॉडिफ़ायर के साथ कंपोज़ किए जा सकने वाले सबस्पेस को मूव करना शुरू और बंद करता है.
  • 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 कॉन्टेक्स्ट में किया जा सकता है. साथ ही, यह Orbiters को उनके सबसे नज़दीकी 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 का इस्तेमाल करने से, कॉन्टेंट गलत दिशा में चला जाएगा.