XR के लिए Jetpack Compose
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
7 मई, 2025 | - | - | - | 1.0.0-alpha04 |
डिपेंडेंसी का एलान करना
XR compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha04" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha04" }
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha04") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha04") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 1.0
वर्शन 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 में ये कमिट शामिल हैं.
नई सुविधाएं
- कस्टम
SubspaceModifier
टाइप को कॉम्पोज़िशन की लोकल वैल्यू ऐक्सेस करने की अनुमति देने के लिए,CompositionLocalConsumerSubspaceModifierNode
इंटरफ़ेस जोड़ा गया. - एक नया
SpatialPanel
एपीआई जोड़ा गया है, जो कॉम्पोज़AndroidView
लागू करने के स्टाइल का पालन करता है और पिछलेViewBased SpatialPanel
को बंद कर देता है. VolumeConstraints.Unbounded
कंपैनियन ऑब्जेक्ट जोड़ा गया, जो बिना किसी सीमा के पाबंदियों को दिखाता है.- स्पेसलाइज़ किए गए ऑडियो सोर्स की अनुमति देने के लिए,
SubspaceModifier.onPointSourceParams
जोड़ा गया. - एक सार्वजनिक
ApplicationSubspace
जोड़ा गया है. इसमेंVolumeConstraints
का विकल्प भी दिया गया है, ताकि 3D क्षेत्र को तय किया जा सके. इस क्षेत्र में ऐप्लिकेशन, स्पेसऐक्टिव कॉन्टेंट रेंडर कर सकता है. अगर कोई पाबंदी नहीं तय की गई है, तो डिफ़ॉल्ट रूप से सबस्पेस की चौड़ाई और ऊंचाई,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 modifier से
onPoseChange
कॉलबैक हटा दिया गया है. इसके बजाय,onMove
का इस्तेमाल करें. - अगर
SubspaceModifiers
को हटाया जा रहा है या हटाया जा चुका है, तो वह अपने इफ़ेक्ट लागू नहीं करेगा. - मौजूदा
SpatialRow
API कोSpatialRow
औरSpatialCurvedRow
में बांट दिया गया है. अगर आपने पहलेSpatialRow
केcurveRadius
पैरामीटर का इस्तेमाल किया था, तो अबSpatialCurvedRow
का इस्तेमाल करें. यह पैरामीटर भी वही काम करता है. - हाल ही की किसी सिस्टम इमेज पर
MainPanel
औरActivityPanel
को चलाने पर, अब उनके टाइटल बार नहीं दिखते. - अल्फा और स्केल मॉडिफ़ायर अब स्टैक किए जा सकते हैं. साथ ही, लागू किए गए अल्फा या स्केल की वैल्यू के लिए, उनकी वैल्यू को गुणा कर दिया जाएगा.
- Movable मॉडिफ़ायर से
onPoseChange
कॉलबैक को ऑप्टिमाइज़ किया गया है, ताकि पोज़ को आसानी से मूव किया जा सके. - अब, मूव किए जा सकने वाले और साइज़ में बदले जा सकने वाले मॉडिफ़ायर, मुख्य थ्रेड पर अपने कॉलबैक करेंगे. इससे यह पक्का होगा कि स्थिति में बदलाव होने पर, फिर से कॉम्पोज़ करने की प्रोसेस शुरू हो जाएगी.
- लेआउट और मेज़रमेंट फ़ेज़ में स्टेटस ऑब्ज़र्वेशन जोड़ा गया, ताकि यह पक्का किया जा सके कि
SubspaceLayout
में स्टेटस में होने वाले बदलाव, रीलेआउट को ट्रिगर करेंगे. - मौजूदा मॉडिफ़ायर का बेहतर तरीके से फिर से इस्तेमाल करने के लिए, मॉडिफ़ायर चेन के अपडेट को ऑप्टिमाइज़ किया गया है.
गड़बड़ियां ठीक की गईं
SpatialDialog
दिखने पर स्क्रीन को स्किम करना बंद कर दिया. (Ic4594)- मॉडिफ़ायर नोड अलग होने के दौरान, फिर से लेआउट करने के अनुरोधों को अब अनदेखा कर दिया जाएगा.
- 'मोव किए जा सकने वाले' और 'साइज़ में बदले जा सकने वाले' मॉडिफ़ायर से ट्रिगर होने वाले, रीलेआउट के चरणों को हटा दिया गया है.
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
चालू होने पर, जिस सबस्पेस एलिमेंट को दूसरी जगह ले जाया गया है वह बड़ा या छोटा हो जाएगा. यह उस स्केल को भी बनाए रखेगा जो गतिविधि शुरू होने से पहले था.
एपीआई में हुए बदलाव
SessionCallbackProvider
को हटाकरSpatialCapabilities
को जोड़ा गया.
दूसरे बदलाव
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-आधारित यूज़र इंटरफ़ेस (यूआई) को स्पेस लेआउट में रखा जा सकता है. इसमें वॉल्यूम सबस्पेस कॉम्पोज़ेबल की सुविधा जोड़ी गई है. इसकी मदद से, अपने यूज़र इंटरफ़ेस (यूआई) के हिसाब से, SceneCore इकाइयों को रखा जा सकता है. जैसे, 3D मॉडल. ज़्यादा जानकारी के लिए, डेवलपर गाइड पढ़ें:
Subspace
: इस कॉम्पोज़ेबल को आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की हैरारकी में कहीं भी रखा जा सकता है. इससे, फ़ाइलों के बीच कॉन्टेक्स्ट को खोए बिना, 2D और स्पेसिएल यूआई के लेआउट बनाए जा सकते हैं. इससे, XR और अन्य फ़ॉर्म फ़ैक्टर के बीच मौजूदा ऐप्लिकेशन आर्किटेक्चर जैसी चीज़ों को आसानी से शेयर किया जा सकता है. इसके लिए, आपको अपने पूरे यूज़र इंटरफ़ेस (यूआई) ट्री में स्टेटस को होस्ट करने या अपने ऐप्लिकेशन का आर्किटेक्चर फिर से बनाने की ज़रूरत नहीं है.स्पेशल पैनल: स्पेशल पैनल, एक सबस्पेस कॉम्पोज़ेबल है. इसकी मदद से, ऐप्लिकेशन का कॉन्टेंट दिखाया जा सकता है. उदाहरण के लिए, स्पेशल पैनल में वीडियो प्लेबैक, स्टिल इमेज या कोई अन्य कॉन्टेंट दिखाया जा सकता है.
ऑर्बिटर: ऑर्बिटर, स्पेस वाला यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट होता है. इसे स्पेस पैनल से अटैच करने के लिए डिज़ाइन किया गया है. इसमें उस स्पेस पैनल से जुड़े नेविगेशन और संदर्भ के हिसाब से ऐक्शन आइटम होते हैं. उदाहरण के लिए, अगर आपने वीडियो कॉन्टेंट दिखाने के लिए स्पेस पैनल बनाया है, तो ऑर्बिटर में वीडियो चलाने के कंट्रोल जोड़े जा सकते हैं.
वॉल्यूम: अपने यूज़र इंटरफ़ेस (यूआई) के हिसाब से, SceneCore इकाइयों को रखें. जैसे, 3D मॉडल.
स्पेस लेआउट:
SpatialRow
,SpatialColumn
,SpatialBox
, औरSpatialLayoutSpacer
का इस्तेमाल करके, एक से ज़्यादा स्पेस पैनल बनाए जा सकते हैं और उन्हें स्पेस लेआउट में रखा जा सकता है. अपने लेआउट को पसंद के मुताबिक बनाने के लिए,SubspaceModifier
का इस्तेमाल करें.स्पेस के हिसाब से यूज़र इंटरफ़ेस (यूआई) के कॉम्पोनेंट: इन एलिमेंट का इस्तेमाल, आपके 2D यूआई में फिर से किया जा सकता है. साथ ही, इनके स्पेस के हिसाब से एट्रिब्यूट सिर्फ़ तब दिखेंगे, जब स्पेस के हिसाब से काम करने की सुविधाएं चालू हों.
SpatialDialog
: पैनल, ज़्यादा ऊंचाई वाला डायलॉग दिखाने के लिए, z-डेप्थ में थोड़ा पीछे धकेल दिया जाएगा.SpatialPopUp
: पैनल, ज़्यादा ऊंचाई वाला पॉप-अप दिखाने के लिए, z-depth में थोड़ा पीछे धकेल दिया जाएगाSpatialElevation
:SpatialElevationLevel
को ऊंचाई जोड़ने के लिए सेट किया जा सकता है.
SpatialCapabilities: जब उपयोगकर्ता आपके ऐप्लिकेशन या सिस्टम से इंटरैक्ट करते हैं, तो स्पेस की सुविधाओं में बदलाव हो सकता है. इसके अलावा, आपके ऐप्लिकेशन से भी इन सुविधाओं में बदलाव किया जा सकता है. उदाहरण के लिए, होम स्पेस या फ़ुल स्पेस में जाना. समस्याओं से बचने के लिए, आपके ऐप्लिकेशन को
LocalSpatialCapabilities.current
की जांच करनी होगी. इससे यह पता चलेगा कि मौजूदा एनवायरमेंट में कौनसे एपीआई काम करते हैं.isSpatialUiEnabled
: स्पेशल यूज़र इंटरफ़ेस (यूआई) एलिमेंट (जैसे, SpatialPanel)isContent3dEnabled
: 3D ऑब्जेक्टisAppEnvironmentEnabled
: एनवायरमेंटisPassthroughControlEnabled
: ऐप्लिकेशन, पासथ्रू स्टेटस को कंट्रोल कर सकता है या नहींisSpatialAudioEnabled
: स्पेशल ऑडियो
ऐसी समस्याएं जिनकी जानकारी पहले से है
- फ़िलहाल, XR के लिए Jetpack Compose का इस्तेमाल करने के लिए, कम से कम 30 वर्शन का SDK टूल होना ज़रूरी है. इस समस्या को हल करने के लिए, यहां दी गई मेनिफ़ेस्ट एंट्री
<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 का इस्तेमाल किया जाता है जिसे काफ़ी आगे या पीछे ले जाया गया है, तो कॉन्टेंट गलत दिशा में चला जाएगा.