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

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

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

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

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

ग्रूवी

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

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

Kotlin

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

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

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

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

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

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

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

वर्शन 1.0

वर्शन 1.0.0-alpha09

03 दिसंबर, 2025

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

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

  • LookAtUser और बिलबोर्ड मॉडिफ़ायर जोड़ना. इससे कॉन्टेंट हमेशा उपयोगकर्ता की ओर दिखेगा. (I49b99)
  • इसकी मदद से, SpatialExternalSurfaces और SpatialPanels के लिए InteractionPolicy सेट किया जा सकता है. इससे क्लिक और अन्य 3D इनपुट इवेंट का पता लगाया जा सकता है. (Iae155)
  • चौड़ाई, ऊंचाई, और गहराई को डीपी वैल्यू के तौर पर इस्तेमाल करके, साइज़ और requiredSize मॉडिफ़ायर ओवरलोड जोड़ा गया. (I92f79)
  • ParentLayoutParamsModifier इंटरफ़ेस अब DelegatableSubspaceNode तक बढ़ गया है. (I1a6d4)
  • Subspace API के पक्ष में ApplicationSubspace को बंद कर दिया गया है.
    • Subspace API के काम करने के तरीके में बदलाव किया गया है. अब यह सिर्फ़ सुझाए गए पोज़ और स्केल पर, ऐप्लिकेशन के लिए एक सबस्पेस उपलब्ध कराएगा.
    • PlanarEmbeddedSubspace एपीआई को 2D कॉन्टेक्स्ट में एम्बेड किए गए सबस्पेस उपलब्ध कराने के लिए लॉन्च किया गया है. (Id3343)
  • SubspaceModifier.Node एपीआई में shouldAutoInvalidate फ़्लैग जोड़ा गया. (I93902)
  • ऐसे एपीआई में required(Size|Width|Depth|Height) जोड़ा गया है जो डेवलपर को @SubspaceComposable के साइज़ को किसी खास रेंज तक सीमित करने की अनुमति देते हैं. इससे पैरंट के मेज़रमेंट से जुड़ी पाबंदियों को अनदेखा किया जा सकता है. (Ifaa78)
  • SubspaceModifier.onSizeChanged जोड़ा गया है. यह डेवलपर को एक आसान और फ़ोकस किया गया कॉलबैक उपलब्ध कराता है, ताकि @SubspaceComposable का साइज़ बदलने पर वे कार्रवाई कर सकें. (I994f9)
  • वॉल्यूम एपीआई को हटा दिया गया है. वॉल्यूम एपीआई के बजाय, SceneCoreEntity एपीआई का इस्तेमाल किया जाना चाहिए. (I4162b)
  • SubspaceLayoutModifierNode.requestRelayout को invalidateMeasurement/invalidatePlacement में बांटें. (I14805)
  • SpatialGltfModel एपीआई जोड़ा गया है. इसकी मदद से डेवलपर, कंपोज़ में glTF रेंडर कर सकते हैं. (Icc91f)
  • glTF को आसानी से रेंडर करने के लिए, SpatialGltfModel कंपोज़ेबल एपीआई लॉन्च किया गया (Iade67)

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

  • SceneCoreEntity में लेआउट से जुड़ी गड़बड़ी को ठीक किया गया है. अब यह अपनी सीमाओं का सही तरीके से पालन करेगा. (I11bb8)
  • jxr-compose मॉड्यूल को Compile sdk = 34 (I2d5db) पर डाउनग्रेड किया गया

वर्शन 1.0.0-alpha08

22 अक्टूबर, 2025

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

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

  • ResizePolicy को बदलकर onResizeStart, onResizeUpdate, और onResizeEnd को स्वीकार किया गया. (I7e21f)

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

  • Subspace का इस्तेमाल करके किसी गतिविधि को बंद करते समय क्रैश होने से रोकें. (I595a1)

वर्शन 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 और ResizePolicy(), SpatialPanel और SpatialExternalSurface एपीआई (I397bf, b/437924639) का हिस्सा हैं. इसलिए, अब मूव किए जा सकने वाले और साइज़ बदलने की सुविधा वाले SubspaceModifiers को बंद किया जा रहा हैDragPolicy()
  • स्पेशल लेआउट में 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 कॉलबैक तब कॉल किए जाते हैं, जब उपयोगकर्ता, मूव किए जा सकने वाले मॉडिफ़ायर के साथ कंपोज़ किए जा सकने वाले सबस्पेस को मूव करना शुरू और बंद करता है.
  • 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 तरीके नहीं हैं. इसलिए, इनका इस्तेमाल कंपोज़ेबल नहीं किए जा सकने वाले कॉन्टेक्स्ट में किया जा सकता है.
  • स्पेशल एलिवेशन लेवल को अपडेट करें, ताकि वे यूज़र एक्सपीरियंस की नई खास बातों से मेल खाएं.
  • MeasurableLayout में SubspaceSemanticsInfo इंटरफ़ेस लागू करें.
  • 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 का इस्तेमाल करने से कॉन्टेंट गलत दिशा में चला जाएगा जिसे काफ़ी हद तक मूव किया गया है.