Jetpack SceneCore
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
30 जुलाई, 2025 | - | - | - | 1.0.0-alpha05 |
डिपेंडेंसी का एलान करना
XR SceneCore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha05" // Required for Java implementation "com.google.guava:listenablefuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha05") // Required for Java implementation("com.google.guava:listenablefuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. कृपया नई लाइब्रेरी बनाने से पहले, इस लाइब्रेरी में मौजूद मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.0
वर्शन 1.0.0-alpha05
30 जुलाई, 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05
, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05
, और androidx.xr.scenecore:scenecore:1.0.0-alpha05
रिलीज़ किए गए हैं. वर्शन 1.0.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
- पैनल की इकाइयों और
SurfaceEntities
में, परसीव्ड रिज़ॉल्यूशन एपीआई जोड़ा गया. (I118f6) PerceivedResolution
HSM में गतिविधि के मुख्य पैनल के रिज़ॉल्यूशन पर नज़र रखने के लिए, Scene.kt में कॉलबैक के तरीके जोड़े गए. (I58084)SurfaceEntity
- वीडियो बनाते समय सुपर सैंपलिंग का अनुरोध करने के लिए, ऐप्लिकेशन में सहायता जोड़ी गई. इससे ऐप्लिकेशन, एंटी-एलियासिंग के लिए सुपर सैंपलिंग फ़िल्टर का इस्तेमाल कर पाते हैं. (I06913)ActivitySpace
मेंrecommendedContentBoxInFullSpace
प्रॉपर्टी जोड़ी गई. यह फ़ुल स्पेस मोड में, कॉन्टेंट को रखने के लिए सुझाया गया बॉक्स दिखाता है. (I4cd6f)- मूवेबल मॉडिफ़ायर के लिए ओवरलोड किया गया कंस्ट्रक्टर उपलब्ध कराया गया है. इससे ऐंकरिंग की जा सकती है. (Ic0c70)
एपीआई में हुए बदलाव
इस रिलीज़ के लिए, SceneCore
में एपीआई से जुड़े कई बदलाव किए गए हैं. कई क्लास के नाम बदल दिए गए हैं और/या उन्हें अलग-अलग मॉड्यूल में ले जाया गया है. साथ ही, ज़्यादातर getter/setter तरीकों को Kotlin प्रॉपर्टी से बदल दिया गया है. हमें उम्मीद है कि पहली बीटा रिलीज़ तक, एपीआई में कुछ ऐसे बदलाव होंगे जो काम करने के तरीके को बदल देंगे. हालांकि, ये बदलाव ज़्यादा नहीं होंगे और न ही इनसे काम करने के तरीके पर ज़्यादा असर पड़ेगा.
- इन क्लास और इंटरफ़ेस के नाम बदले गए हैं और/या इन्हें दूसरी जगह ले जाया गया है:
androidx.xr.scenecore.PixelDimensions
सेandroidx.xr.runtime.math.IntSize2d
;androidx.xr.scenecore.Dimensions
सेandroidx.xr.runtime.math.FloatSize3d
;androidx.xr.scenecore.ActivityPose
सेScenePose
,androidx.xr.scenecore.ContentlessEntity
सेGroupEntity
,androidx.xr.scenecore.PlaneType
सेPlaneOrientation
;androidx.xr.scenecore.PlaneSemantic
सेPlaneSemanticType
. (Ifd405)(I3b622) (If534d) Scene
की कई प्रॉपर्टी के लिए, सेटर को निजी बना दिया गया है. इनका इस्तेमालSceneCore
क्लाइंट को नहीं करना चाहिए:activitySpace
,activitySpaceRoot
,mainPanelEntity
,perceptionSpace
,spatialCapabilities
,spatialEnvironment
, औरspatialUser
. (I2f506)- इकाई में: इन प्रॉपर्टी को बदल दिया गया है:
get/setParent()
,setContentDescription
;Entity.is/setHidden()
का इस्तेमाल अब नहीं किया जा सकता, इसकी जगहEntity.is/setEnabled
का इस्तेमाल करें. (Ibc4c6) androidx.xr.scenecore.BasePanelEntity
क्लास को हटा दिया गया है. इसके बजाय, सीधेPanelEntity
का इस्तेमाल करें.PanelEntity
के लिए, गैटर और सेटर को प्रॉपर्टी से बदल दिया गया है.PanelEntity.size
प्रॉपर्टी कोFloat3dSize
से बदलकरFloat2dSize
कर दिया गया है. इस्तेमाल न किए जा रहे तरीकेandroidx.xr.scenecore.PanelEntity.getPixelDimensions
को हटा दिया गया है. इसके बजाय,getSizeInPixels
का इस्तेमाल करें. (Icc174)androidx.xr.scenecore.OnSpaceUpdatedListener
कोRunnable
से बदला गया. (I19308)SpatialUser.getCameraViews()
को प्रॉपर्टी से बदला गया. (Ib0cc5)ExrImage
औरGltfModel:
के लिए,create
तरीकों को निलंबित करने वाले फ़ंक्शन में बदला गया;String
के बजायUri
याPath
को स्वीकार करने के लिए, क्रिएट पैरामीटर में बदलाव किया गया. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceMode
औरSpatialEnvironment.requestHomeSpaceMode
को सीन में ले जाया गया. उदाहरण के लिए,session.scene.spatialEnvironment.requestFullSpaceMode()
के बजायsession.scene.requestFullSpaceMode()
का इस्तेमाल करें.addOnPassthroughOpacityChangedListener
औरaddOnSpatialEnvironmentChangedListener
में अब ऐसे ओवरराइड हैं जो वैकल्पिक एक्ज़ीक्यूटर स्वीकार करते हैं. (I12fe0) (I6b21e)- इन बंद किए गए
SpatialEnvironment
तरीकों को हटा दिया गया है:togglePassthrough
,setPassthrough
,setPassthroughOpacity
,getPassthroughMode
,getPassthroughOpacity
,setSkybox
, औरsetGeometry
. इसके अलावा, बंद की गई क्लासSpatialEnvironment.PassthroughMode
(I927bd) (I927bd) (I927bd) क�� ��ी हटा दिया गया है - हमने
SpatialEnvironment
के इन गेटर और सेटर को Kotlin प्रॉपर्टी से बदल दिया है:getCurrentPassthroughOpacity()
,get/setPassthroughOpacityPreference()
,get/setSpatialEnvironmentPreference()
,isSpatialEnvironmentPreferenceActive()
(I33a7b) (Ie06e2) (Ie06e2) SpatialEnvironmentPreference.preferredPassthroughOpacity
का टाइपFloat?
से बदलकरFloat
कर दिया गया है. अब यह शून्य वैल्यू स्वीकार नहीं करता. इसके बजाय,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE
का इस्तेमाल यह बताने के लिए किया जाता है कि ओपैसिटी की कोई प्राथमिकता नहीं है. (I40107)- क्रिएट करने के तरीके में,
windowBoundsPx
पैरामीटर कोpixelDimensions
और उसके टाइप को Rect सेIntSize2d
में अपडेट किया गया. (I1926e) SpatialEnvironment
कंस्ट्रक्टर अब इंटरनल है (I75a51)- क्लास
SpatialPointerIconNone
औरSpatialPointerIconCircle
को कंपैनियन ऑब्जेक्टSpatialPointerIcon.NONE
औरSpatialPointerIcon.CIRCLE
से बदला गया (I416d2) SpatialPointerComponent
मेंSpatialPointerIcon
अब नल नहीं है. सिस्टम के डिफ़ॉल्ट पॉइंटर आइकॉन का इस्तेमाल करने के लिए, शून्य के बजायSpatialPointerIcon.DEFAULT
का इस्तेमाल करें. (I416d2)androidx.xr.scenecore.AnchorEntity.getState()
को सिर्फ़ देखने की अनुमति वाली प्रॉपर्टी से बदल दिया गया है.AnchorEntity.create()
तरीके के पैरामीटर के नाम बदले गए हैं, ताकि उन्हें बेहतर तरीके से समझा जा सके. लिसनर को सेट करने और जोड़ने के लिए,AnchorEntity
के तरीकों में, लिसनर को आखिरी आर्ग्युमेंट में ले जाया गया है, ताकि ट्रेलिंग लैम्डा चालू किए जा सकें.AnchorEntity
के लिएandroidx.xr.scenecore.OnStateChangedListener
कोConsumer<AnchorEntity.State>
��े बदला गया. (I472e0)GltfModelEntity.getAnimationState()
अब एक प्रॉपर्टी है. (I10b29)ActivitySpace.getBounds()
को प्रॉपर्टी से बदला गया.ActivitySpace.addBoundsChangedListener
का नाम बदलकरActivitySpace.addOnBoundsChangedListener
कर दिया गया.ActivitySpace.setOnSpaceUpdatedListener
को add/remove तरीकों से बदला गया. (I4c956)AnchorPlacement: planeTypeFilter
का नाम बदलकरanchorablePlaneOrientations
कर दिया गया है. साथ ही,planeSemanticFilter
का नाम बदलकरanchorablePlaneSemanticTypes
कर दिया गया है.AnchorEntity
याActivitySpace
मेंMovableComponent
जोड़ने पर, गलत वैल्यू मिलेगी.MoveListener
का नाम बदलकरEntityMoveListener shouldDisposeParentAnchor
कर दिया गया है.EntityMoveListener shouldDisposeParentAnchor
का नाम बदलकरdisposeParentOnReAnchor systemMovable
कर दिया गया है.create
फ़ंक्शन सेdisposeParentOnReAnchor systemMovable
को हटा दिया गया है. अब इसकी जगहcreeateCustomMovable
,createSystemMovable
, औरcreateAnchorable
का इस्तेमाल किया जाता है (If11c4)SurfaceEntity.featherRadiusX/Y
को हटा दिया गया है औरEdgeFeatheringParams
क्लास कॉन्सेप्ट को जोड़ दिया गया है. (Ic78fc)PanelEntity.enablePanelDepthTest()
तरीके कोpanelClippingConfig
प्रॉपर्टी से बदल दिया गया है. डेप्थ-टेस्टिंग की सुविधा चालू करने के लिए,Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)
पर सेट करें या इसे बंद करने के लिए,PanelClippingConfig(isDepthTestEnabled = false)
पर सेट करें. (I0cbe0)Scene.mainPanelEntity
अबPanelEntity
के बजायMainPanelEntity
टाइप का है (I7125a)- Scene के
setFullSpaceMode
तरीके का नाम बदलकरconfigureBundleForFullSpaceModeLaunch
औरsetFullSpaceModeWithEnvironmentInherited
तरीके का नाम बदलकरconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited
कर दिया गया है. (I0cbe0) (I0cbe0) SpatialVisibility
की UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV, और WITHIN_FOV वैल्यू के नाम बदलकर, SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW, और SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW कर दिए गए हैं (Ie7e8c)SpatialVisibility
क्लास को सार्वजनिक ऑब्जेक्ट से बदल दिया गया है. इसमें const Int वैल्यू हैं.setSpatialVisibilityChangedListener
अबConsumer<SpatialVisibility>
के बजायConsumer<Int>
स्वीकार करता है (Ie7e8c)PointerCaptureComponent
कॉन्स्टेंट ��ा नाम बदला गया और उन्हेंPointerCaptureComponent.PointerCaptureState
ऑब्जेक्ट (I9c7ac) में ले जाया गयाPointerCaptureComponents' StateListener
कोConsumer<Int>
से बदला गया. (I9c7ac)InputEventListener
कोConsumer<InputEvent>
(I9c7ac) से बदला गयाsetPreferredAspectRatio
को Scene क्लास सेSpatialWindow
ऑब्जेक्ट में ले जाया गया है. साथ ही, यह Session को पहले पैरामीटर के तौर पर लेता है. (I7b717)Entity.setHidden()
की जगहEntity.setEnabled()
औरEntity.isHidden()
की जगहEntity.isEnabled()
ने ले ली है.setHidden(false)
,setEnabled(true)
औरisHidden() == !isEnabled()
के बराबर है. (Icf0de)Entity.contentDescription
टाइप को String से बदलकरCharSequence
कर दिया गया है. (Ie59be)Session.create
औरSession.configure
अब ज़रूरी अनुमतियां न मिलने पर,SessionCreatePermissionsNotGranted
याSessionConfigurePermissionsNotGranted
के बजायSecurityException
दिखाता है. (I7c488)ResizableComponent.create
अबConsumer<ResizeEvent> ResizeEventListener
की ज़रूरत हैConsumer<ResizeEvent> ResizableComponent.size
से बदल दिया गयाResizableComponent.affordanceSize ResizableComponent.minimumSize
का नाम बदलकरResizableComponent.minimumEntitySize ResizableComponent.maximumSize
कर दिया गयाResizableComponent.maximumEntitySize
का नाम बदलकरResizableComponent.autoHideContent
कर दिया गयाResizableComponent.shouldAutoHideContent
का नाम बदलकरResizableComponent.forceShowResizeOverlay
कर दिया गयाResizableComponent.shouldAlwaysShowOverlay
का नाम बदलकर कर दिया गया (I97a2d)androidx.xr.scenecore
औरandroidx.xr.compose
के लिए,minSDK
को घटाकर 24 कर दिया गया है. XR पैकेज के लिए, अब भी रनटाइम में API 34 की ज़रूरत होती है. (I17224)- Jetpack XR के सभी पैकेज पर से
RequiresApi(34)
पाबंदी हटा दी गई है. यह पाबंदी ज़रूरी नहीं थी, क्योंकि फ़िलहाल Jetpack XR सिर्फ़ उन डिवाइसों पर उपलब्ध है जिनमें एपीआई लेवल 34 या उसके बाद का वर्शन है. (Iae0f8) - मुख्य
SceneCore
आर्टफ़ैक्ट (xr:scenecore:scenecore
) में सिर्फ़ Kotlin-स्टाइल वाले एसिंक्रोनस एपीआई शामिल ��ोंगे. Java डेवलपर,xr:scenecore:scenecore-guava
लाइब्रेरी पर भरोसा कर सकते हैं. इससे उन्हें काम करने वाले एपीआई को ऐक्सेस करने में मदद ��िल��ी है. (If221b) - Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद का वर्शन इस्तेमाल करना ज़रूरी है (Idb6b5)
- यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल लागू करने के लिए, कंपाइलर के इस तर्क का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict
(यह Kotlin कंपाइलर के वर्शन 2.1.0 से डिफ़ॉल्ट रूप से शुरू होता है) (Ia8420) ListenableFuture
वैल्यू देने वाले सभी एसिंक मैथड को, Kotlin के सस्पेंड फ़ंक्शन से बदल दिया गया है. Java डेवलपर जो Kotlin के सस्पेंड फ़ंक्शन के बजाय,ListenableFuture
पर आधारित एसिंक मैथड का इस्तेमाल करना चाहते हैं उन्हें अब:xr:scenecore-scenecore-guava
में एक्सटेंशन फ़ंक्शन का इस्तेमाल करना होगा. उदाहरण के लिए,GuavaExrImage
में Guava के बराबर ExrImage एसिंक फ़ंक्शन,GuavaScenePose
में Guava के बराबरScenePose
एसिंक फ़ंक्शन,GuavaGltfModel
मेंGuava-equivalent GltfModel
एसिंक फ़ंक्शन वगैरह शामिल हैं. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
गड़बड़ियां ठीक की गईं
- Jetpack XR Scenecore
ProGuard
के नियम को अपडेट किया गया है, ताकि छोटे किए गए क्लाइंट के लिएAbstractMethodError
को रोका जा सके. (I91a01) - Jetpack XR
SceneCore
के लिए Proguard minification की सुविधा को ��ेहतर बनाने के लिए, कुछ और सुधार किए गए हैं (I4f47e) - उस गड़बड़ी को ठीक किया गया है जिसमें
InteractableComponent
की वजह से क्रैश हो सकता है. ऐसा तब होता है, जबInputEvent
के HitInfo पर मौजूदhitPosition
, सिस्टम से मिलेhitPosition
के शून्य होने पर क्रैश हो सकता है (I7a695) - कॉन्फ़िगरेशन *मोड वैल्यू के नाम बदल दिए गए हैं, ताकि उनके काम करने के तरीके के बारे में पता चल सके. (I6d247)
SceneCore
TestApp में, FOV औरHitTest
से जुड़ी समस्याएं ठीक की गईं. (I2c51e)SpatialCapabilities.hasCapability()
में मौजूद गड़बड़ी को ठीक किया गया है. पहले, बिटवाइज़ OR के साथ पास की गई किसी भी क्षमता के सही होने पर, यह फ़ंक्शन 'सही' दिखाता था. अब यह फ़ंक्शन सिर्फ़ तब 'सही' दिखाएगा, जब सभी क्षमताएं सही होंगी. (I2cd40)SurfaceEntity.StereoMode.TOP_BOTTOM
को अपडेट किया गया है. इसमें ऊपर वाला मैप बाईं आंख के लिए और नीचे वाला मैप दाईं आंख के लिए है. (I4ae68)
वर्शन 1.0.0-alpha04
7 मई, 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04
और androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
- अब पैनल की उन इकाइयों पर भी बैकहैंडलिंग की सुविधा काम करेगी जिनमें गतिविधियां एम्बेड नहीं की गई हैं. बैकहैंडलिंग की सुविधा काम करे, इसके लिए आपको Android मेनिफ़ेस्ट में
android:enableOnBackInvokedCallback= "true"
तय करना होगा. StereoSurfaceEntity
अब दो नईStereoMode
वैल्यू के ज़रिए, MV-HEVC फ़ॉर्मैट में वीडियो चलाने की सुविधा देता है: MULTIVIEW_LEFT_PRIMARY और MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSize
औरPanelEntity.getSize
अब पैरंट स्पेस में साइज़ दिखाते हैं.Entity.setPose
,Entity.getPose
,Entity.setScale
,Entity.getScale
,Entity.setAlpha
, औरEntity.getAlpha
अब नया पैरामीटरrelativeTo
लेते हैं. इससे अलग-अलग स्पेस के हिसाब से वैल्यू को पाने/सेट करने की अनुमति मिलती है. इसके लिए, Parent, Activity, और Real World स्पेस वैल्यू का इस्तेमाल किया जा सकता है. इस पैरामीटर की डिफ़ॉल्ट वैल्यू Parent होती है.SessionExt.kt
में जोड़े गए Spatial Visibility Callback एक्सटेंशन के तरीके. इनका इस्तेमाल यह मॉनिटर करने के लिए किया जाता है कि सीन का कॉन्टेंट, उपयोगकर्ता के फ़ील्ड ऑफ़ व्यू में कब आता है और कब बाहर जाता है.setPointSourceParams
कोSpatialAudioTrack
में जोड़ दिया गया है. इससे ट्रैक बनने के बाद भी पैरामीटर अपडेट किए जा सकते हैं.Scenecore
एपीआई के रेफ़रंस के सा��� एक नई क्लास, सीन जोड़ी गई है. सीन को सेशन की एक्सटेंशन प्रॉपर्टी के तौर पर ऐक्सेस किया जा सकेगा.SessionExt
के अंदर मौजूद फ़ंक्शन को सीन में ले जाया गया है. इसलिए, इंपोर्ट को अडजस्ट करना होगा. उदाहरण के लिए,SessionExt.getScene(session)
.addSpatialCapababilitiesChangedListener
बनामSessionExt.addSpatialCapabilitiesChangedListener
.ActivityPose.hitTestAsync
को जोड़ा गया है. इससे वर्चुअल कॉन्टेंट के ख़िलाफ़hitTest
को चालू किया जा सकेगा.- नया कॉम्पोनेंट टाइप
SpatialPointerComponent
जोड़ा गया है. इससे क्लाइंट, पॉइंटर के लिए रेंडर किया गया आइकॉन तय कर सकते हैं या आइकॉन को बंद कर सकते हैं. फ़िलहाल, इस कॉम्पोनेंट को सिर्फ़PanelEntity
इंस्टेंस से जोड़ा जा सकता है. - पेश है नया
PanelEntity
फ़ैक्ट्री, जो पैनल के डाइमेंशन को मीटर या पिक्सल में लेता है. पैनल के लिए, पुरानेPanelEntity
फ़ैक्ट्री से दो डाइमेंशन टाइप पैरामीटर लेने की सुविधा हटा दी गई है.
एपीआई में हुए बदलाव
- Jetpack XR के सभी पैकेज पर से
RequiresApi(34)
पाबंदी हटा दी गई है. यह पाबंदी ज़रूरी नहीं थी, क्योंकि फ़िलहाल Jetpack XR सिर्फ़ उन डिवाइसों पर उपलब्ध है जिनमें एपीआई लेवल 34 या उसके बाद का वर्शन है. (Iae0f8) - Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद का वर्शन इस्तेमाल करना ज़रूरी है (Idb6b5)
PermissionHelper
क्लास को हटा दिया गया है.PanelEntity.getPixelDensity
का अब इस्तेमाल नहीं किया जा सकता.PanelEntity.setPixelDimensions
औरPanelEntity.getPixelDimension
को हटा दिया गया है. इनकी जगहsetSizeInPixels
औरgetSizeInPixels
का इस्तेमाल किया जा रहा है.Entity.getActivitySpaceAlpha
के भाषा पैक को हटाया गया. इसेEntity.getAlpha(Space.Activity)
से बदला जा सकता है.Entity.getWorldSpaceScale
के भाषा पैक को हटाया गया. इसेEntity.getScale(Space.REAL\_WORLD)
से बदला जा सकता है.SceneCore
में मौजूद Session क्लास को मिटा दिया गया है. अब XR Runtime में Session क्लास का इस्तेमाल किया जाता है.StereoSurfaceEntity
का नाम बदलकरSurfaceEntity
कर दिया गया है.Entity.setSize
औरEntity.getSize
को हटा दिया गया है. साथ ही, इन दोनों के तरीकेPanelEntity
में जोड़ दिए गए हैं.PointSourceAttributes
का नाम बदलकरPointSourceParams
कर दिया गया है.SpatializerConstants.SOURCE\_TYPE\_BYPASS
का नाम बदलकरSpatializerConstants.SOURCE\_TYPE\_DEFAULT
कर दिया गया है.PointSourceParams
इकाई के ऐक्सेस लेवल को सार्वजनिक से बदलकर, संगठन के लिए उपलब्ध कर दिया गया है.AnchorEntity.create
के लिए, अबSession.configure()
मेंPlaneTrackingMode
को कॉन्फ़िगर करना ज़रूरी है.SpatialUser
एपीआई के लिए, अबSession.configure()
मेंHeadTrackingMode
को कॉन्फ़िगर करना ज़रूरी है.ResizableComponent
अटैच न होने पर, यह ERROR-लेवल के लॉग के बजाय INFO-लेवल का लॉग देगा.- Fov क्लास अब एक सामान्य Kotlin क्लास है.
- हर कॉन्क्रीट इकाई के टाइप को उसकी अपनी फ़ाइल में रखने के लिए,
Entity.kt
को अलग करें. - नया
PanelEntity
बनाते समय, ज़्यादातर व्यू कोFrameLayout
के साथ फिर से जोड़ा जाएगा. इससे, Spatial Panels के साथLayoutInspector
का इस्तेमाल करना आसान हो जाता है. - फ़िलहाल इस्तेमाल किया जा रहा
XrExtensions
इंस्टेंस, अब प्लैटफ़ॉर्म पर रजिस्टर हो गया है. इससे ऐप्लिकेशन को डीबग करने में मदद मिलेगी.
गड़बड़ियां ठीक की गईं
- ऐसी समस्या को ठीक किया गया है जिसकी वजह से,
MovableComponent
औरAnchorPlacement
वालेPanelEntity
को दूसरी जगह ले जाने पर, ऐप्लिकेशन क्रैश हो जाता था - उस समस्या को ठीक कर दिया गया है जिसमें
ResizableComponent
,onResizeStart
कॉलबैक में पुराने साइज़ दिखा रहा था. JxrPlatformAdapterAxr
केdispose()
को कई बार कॉल करने पर होने वाली क्रैश की समस्या को ठीक किया गया.
वर्शन 1.0.0-alpha03
26 फ़रवरी, 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03
और androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
- Jetpack XR कोड के लिए, Proguard minification की सुविधा अब उपलब्ध है
गड़बड़ियां ठीक की गईं
- Jetpack XR SceneCore के लिए Proguard minification की सुविधा को बेहतर बनाने के लिए, कुछ और गड़बड़ियां ठीक की गई हैं (I4f47e)
- Jetpack XR Scenecore
ProGuard
के नियम को अपडेट किया गया है, ताकि छोटे किए गए क्लाइंट के लिएAbstractMethodError
को रोका जा सके. (I91a01)
वर्शन 1.0.0-alpha02
12 फ़रवरी, 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02
और androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये कमिट शामिल हैं.
1.0.0-alpha02 से पहले बनाए गए ऐप्लिकेशन पर असर डालने वाला, जल्द होने वाला बड़ा बदलाव
- फ़ैक्ट्री के तरीकों को
Session
क्लास से हटाकर, हर टाइप के कंपैनियन तरीके में ले जाया गया है:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)
को मिटा दिया गया है और उसकी जगहActivityPanelEntity.create(Session, Dimensions, String, Pose)
को जोड़ दिया गया हैSession.createAnchorEntity(Anchor)
को मिटा दिया गया है और उसकी जगहAnchorEntity.create(Session, Anchor)
को जोड़ दिया गया हैSession.createAnchorEntity(Dimensions, Int, Int, Duration)
को मिटा दिया गया है और उसकी जगहAnchorEntity.create(Session, Dimensions, Int, Int, Duration)
को जोड़ दिया गया हैSession.createEntity(String, Pose)
को मिटा दिया गया है और उसकी जगहContentlessEntity.create(Session, String, Pose)
को जोड़ दिया गया हैSession.createExrImageResource(String)
को मिटा दिया गया है और उसकी जगहExrImage.create(Session, String)
को जोड़ दिया गया हैSession.createGltfEntity(GltfModel, Pose)
को मिटा दिया गया है और उसकी जगहGltfModelEntity.create(Session, GltfModel, Pose)
को जोड़ दिया गया हैSession.createGltfModelResource(String)
को मिटा दिया गया है और उसकी जगहGltfModel.create(Session, String)
को जोड़ दिया गया हैSession.createInteractableComponent(Executor, InputEventListener)
को मिटा दिया गया है और उसकी जगहInteractableComponent.create(Session, Executor, InputEventListener)
को जोड़ दिया गया हैSession.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)
को मिटा दिया गया है और उसकी जगहMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
को जोड़ दिया गया हैSession.createPanelEntity(View, Dimensions, Dimensions, String, Pose)
को मिटा दिया गया है और उसकी जगहPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
को जोड़ दिया गया हैSession.createResizableComponent(Dimensions, Dimensions)
को मिटा दिया गया है और उसकी जगहResizableComponent.create(Session, Dimensions, Dimensions)
को जोड़ दिया गया हैSession.createStereoSurfaceEntity(Int, Dimensions, Pose)
को मिटा दिया गया है और उसकी जगहStereoSurface.create(Session, Int, Dimensions, Pose)
को जोड़ दिया गया है
- बंद की जा चुकी इन विधियों को हटा दिया गया है:
Session.canEmbedActivityPanel(Activity)
को मिटा दिया गया है. इसके बजाय,getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)
का इ��्��ेमाल करें.Session.hasSpatialCapability(Int)
को मिटा दिया गया है. इसे बदल दिया गया है. अबgetSpatialCapabilities().hasCapability()
का इस्तेमाल किया जाता है, ताकि यह पता लगाया जा सके कि डिवाइस में स्पेशल क्षमताएं मौजूद हैं या नहीं. ऐसा इसलिए, क्योंकिgetSpatialCapabilities()
,SpatialCapabilities
ऑब्जेक्ट दिखाता है.Session.requestFullSpaceMode()
को मिटा दिया गया है और उसकी जगहSpatialEnvironment.requestFullSpaceMode()
को जोड़ दिया गया हैSession.requestHomeSpaceMode()
को मिटा दिया गया है और उसकी जगहSpatialEnvironment.requestHomeSpaceMode()
को जोड़ दिया गया है
Session.setFullSpaceMode(Bundle)
औरSession.setFullSpaceModeWithEnvironmentInherited(Bundle)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. ऐक्सेस के लिए, डेवलपर फ़ाइलों में नए इंपोर्ट जोड़ने होंगे:import androidx.xr.scenecore.setFullSpaceMode
import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. ऐक्सेस करने के लिए, डेवलपर फ़ाइलों को नया इंपोर्ट जोड़ना होगा:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)
औरSession.getEntityForRtEntity(RtEntity)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. ऐक्सेस के लिए, डेवलपर फ़ाइलों में नए इंपोर्ट जोड़ने होंगे:import androidx.xr.scenecore.getEntitiesOfType
import androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)
को मिटा दिया गया हैSession.createPersistedAnchorEntity(UUID)
को मिटा दिया गया है
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
PanelEntity.setCornerRadius()
औरActivityPanelEntity.setCornerRadius()
तब तक लागू नहीं हो सकते, जब तक पैनल को अगली बार मूव नहीं किया जाता. पैनल को उसकी मौजूदा जगह पर ले जाकर, इस समस्या को कम किया जा सकता हैActivitySpace
परBoundsChanged
को कॉल करने पर, हो सकता है कि कुछActivityPose
सही तरीके से अपडेट न हुए हों. इसेActivitySpace
को होने वालीOnSpaceUpdated
कॉल में अपडेट किया जाएगा
नियमों का उल्लंघन और व्यवहार में बदलाव
- अगर पैनल की चौड़ाई या ऊंचाई 32dp से कम है, तो
PanelEntity
औरActivityPanelEntity
का डिफ़ॉल्ट कॉर्नर रेडियस 32dp या इससे कम होगा
नए एपीआई और सुविधाएँ
StereoSurface.CanvasShape
पेश किया गया है. इससे इमर्सिव मीडिया रेंडर करने के लिए,Spherical
औरHemispherical
कैनवस बनाए जा सकते हैं.StereoSurfaceEntity.create()
अबCanvasShape
पैरामीटर स्वीकार करता है. (���़िलहाल, इस पैरामीटर को अनदेखा किया जाता है. हालांकि, आने वाली रिलीज़ में इसका इस्तेमाल किया जाएगा)StereoSurfaceEntity.create()
अबDimensions
पैरामीटर नहीं लेता है. ऐप्लिकेशन कोCanvasShape
सेट करके, कैनवस के साइज़ को कंट्रोल करना चाहिएStereoSurfaceEntity
मेंCanvasShape
सदस्य होता है, जिसे डाइनैमिक रूप से सेट किया जा सकता है.StereoSurfaceEntity.dimensions
अब सिर्फ़ पढ़ने के लिए उपलब्ध प्रॉपर्टी है. डाइमेंशन बदलने के लिए, ऐप्लिकेशन कोCanvasShape
सेट करना चाहिए.StereoSurfaceEntity
की मदद से, निर्माण के बादStereoMode
को फिर से सेट किया जा सकता है.
दूसरे बदलाव
- कंपाइल-टाइम minSDK को घटाकर 24 कर दिया गया है. Jetpack XR के सभी एपीआई के लिए, रनटाइम में एपीआई 34 की ज़रूरत होती है.
SceneCore
का सेशन फ़ैक्ट्री (Session.create
) अबSCENE_UNDERSTANDING
की अनुमति पाने के लिए इंटेंट लॉन्च नहीं करता है. इसके बजाय, ऐंकर बनाने की कोशिश करने से पहले, क्लाइंट ऐप्लिकेशन को उपयोगकर्ता से साफ़ तौर पर अनुमतियों का अनुरोध करना होगा. अगर उपयोगकर्ता ने अनुमति नहीं दी है, तो ऐंकर नहीं बनाया जा सकेगा.
गड़बड़ियां ठीक की गईं
getActivitySpacePose()
को ठीक कर दिया गया है, ताकिActivitySpace
स्केल का हिसाब लगाया जा सके. इसके लिए, अनुवाद की वैल्यू को हमेशा बिना स्केल किए गए मीटर के बजाय, स्केल किए गए मीटर में दिखाया जाता है.transformPoseTo
अब सोर्स या डेस्टिनेशन मेंActivitySpace
शामिल होने पर, कोऑर्डिनेट में हुए बदलावों का हिसाब लगाने के लिए सही यूनिट का इस्तेमाल करता है.setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
का इस्तेमाल करके, स्काईबॉक्स की प्राथमिकता को शून्य पर सेट करने पर, स्काईबॉक्स को पूरी तरह से काले रंग के स्काईबॉक्स पर सेट कर दिया जाएगा. सिस्टम के डिफ़ॉल्ट स्काईबॉक्स और ज्यामिति पर वापस जाने के लिए,setSpatialEnvironmentPreference(null).
का इस्तेमाल करें
वर्शन 1.0.0-alpha01
12 दिसंबर, 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
रिलीज़ हो गया है.
शुरुआती रिलीज़ की सुविधाएं डेव��पर के लिए Jetpack SceneCore की शुरुआती रिलीज़. यह 3D सीन ग्राफ़ लाइब्रेरी है. इसका इस्तेमाल, इमर्सिव सीन और एनवायरमेंट बनाने और उनमें बदलाव करने के लिए किया जाता है. इस लाइब्रेरी की मदद से, 3D मॉड�� ��र ����न�����ें�� �������� को एक-दूसरे के हिसाब से और वर्चुअल या असल दुनिया के एनवायरमेंट के हिसाब से रखा और व्यवस्थित किया जा सकता है.
- SpatialEnvironment: स्काईबॉक्स इमेज और/या 3D मॉडल ज्यामिति का इस्तेमाल करके, पूरी तरह से इमर्सिव अनुभव बनाएं. इनका इस्तेमाल, आपके एनवायरमेंट के XR सीन के बैकड्रॉप के तौर पर किया जाता है. इसके अलावा, पासथ्रू मोड चालू करें, ताकि वर्चुअल सीन को उपयोगकर्ता के आस-पास की असली दुनिया के साथ इंटिग्रेट किया जा सके.
- PanelEntity: स्टैंडर्ड Android लेआउट और गतिविधियों को, स्पेस के हिसाब से बनाए गए पैनल में एम्बेड करके, अपने 3D सीन में 2D कॉन्टेंट जोड़ें. ये पैनल तैर सकते हैं या इन्हें असली दुनिया की सतहों पर ऐंकर किया जा सकता है.
- GltfModelEntity: इसकी मदद से, अपने सीन में 3D मॉडल को रखा जा सकता है, उन्हें ऐनिमेट किया जा सकता है, और उनके साथ इंटरैक्ट किया जा सकता है. SceneCore, glTF फ़ाइल फ़ॉर्मैट के साथ काम करता है, ताकि मौजूदा मॉडल के साथ आसानी से इंटिग्रेट किया जा सके.
- SpatialAudio: पूरी तरह से इमर्सिव और स्पेशल ऑडियो के लिए, अपने 3D सीन में आस-पास के और पॉइंट ऑडियो सोर्स जोड़ें.
- StereoSurfaceEntity: SceneCore, Android Surface पर रेंडर किए गए कॉन्टेंट को बाईं/दाईं आंख के हिसाब से रूट करने की सुविधा देता है. इसका इस्तेमाल, स्टीरियोस्कोपिक कॉन्टेंट को साइड-बाय-साइड या टॉप-बॉटम फ़ॉर्मैट में रेंडर करने के लिए किया जा सकता है. जैसे, स्टीरियो फ़ोटो, 3D वीडियो या डाइनैमिक तौर पर रेंडर किए गए अन्य यूज़र इंटरफ़ेस (यूआई). ऐप्लिकेशन को वीडियो डिकोड करने के लिए, MediaPlayer या ExoPlayer का इस्तेमाल करना चाहिए.
- कॉम्पोनेंट सिस्टम: SceneCore, आपके XR कॉन्टेंट में सुविधाएं जोड़ने के लिए एक मज़बूत और फ़्लेक्सिबल कॉम्पोनेंट सिस्टम उपलब्ध कराता है. इसमें उपयोगकर्ताओं के लिए, मॉडल और पैनल को मूव करने, उनका साइज़ बदलने, और उनसे इंटरैक्ट करने की सुविधाएं शामिल हैं.
- ऐंकर: पासथ्रू की सुविधा चालू होने पर, पैनल और मॉडल को असल चीज़ों से जोड़ा जा सकता है. इससे लोगों को वर्चुअल कॉन्टेंट को असल दुनिया में आसानी से इंटिग्रेट करने में मदद मिलती है.
- उपयोगकर्ता की पोज़िशन: वर्चुअल सीन में उपयोगकर��ता की जगह की जानकारी ऐक्सेस करता है, ताकि आपके कॉन्टेंट को उपयोगकर्ता की पोज़िशन के हिसाब से दिखाया जा सके.
- SpatialCapabilities: पूरी तरह से अडैप्टिव ऐप्लिकेशन बनाएं. ये ऐप्लिकेशन, उपलब्ध होने पर स्पेस से जुड़ी सुविधाओं का फ़ायदा उठाते हैं. जैसे, यूज़र इंटरफ़ेस (यूआई) कॉन्टेंट की 3D पोज़िशनिंग. इतना ही नहीं, आपका ऐप्लिकेशन चालू रहने के दौरान, सुविधाओं में होने वाले बदलावों को मॉनिटर कर सकता है. इससे, उपयोगकर्ता के Android XR डिवाइस इस्तेमाल करने के तरीके के आधार पर, ऐप्लिकेशन के अनुभव में बदलाव किया जा सकता है.
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- फ़िलहाल, Jetpack SceneCore का इस्तेमाल करने के लिए, minSDK 30 की ज़रूरत होती है. इस समस्या को हल करने के लिए, यहां दी गई मेनिफ़ेस्ट एंट्री
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
जोड़ें, ताकि कम से कम SDK वर्शन 23 के साथ ऐप्लिकेशन बनाया और चलाया जा सके. - सेशन कई स्थितियों में अमान्य हो सकता है. इन स्थितियों में गतिविधि अपने-आप फिर से शुरू हो जाती है. जैसे, मुख्य पैनल का साइज़ बदलना, पेरिफ़ेरल कनेक्ट करना, और लाइट और डार्क मोड के बीच स्विच करना. अगर आपको सेशन अमान्य होने से जुड़ी समस्याएं आती हैं, तो इन तरीकों को आज़माएं: मुख्य पैनल का साइज़ बदलने की सुविधा बंद करें, डाइनैमिक पैनल इकाई का इस्तेमाल करें, कॉन्फ़िगरेशन में कुछ ब��लावों के लिए गतिविधि फिर से बनाने की सुविधा बंद करें या लाइट/डार्क मोड थीम बदलने की सुविधा बंद करें.
- GltfEntity पर, मूव किए जा सकने वाले और साइज़ बदलने वाले कॉम्पोनेंट काम नहीं करते.
- GltfEntity पर Entity.getSize() काम नहीं करता.
- Jetpack XR ऐप्लिकेशन को AndroidManifest में
android.permission.SCENE_UNDERSTANDING
अनुमति का अनुरोध करना होगा. - सेशन बनाने की सुविधा, सिर्फ़ Android XR डिवाइस पर उपलब्ध है. फ़िलहाल, अगर आपने कोई सेशन बनाया है और उसे Android XR डिवाइस के अलावा किसी दूसरे डिवाइस पर इस्तेमाल करने की कोशिश की है, तो आपको RuntimeException मिलेगा.
- `SpatialEnvironment.setSpatialEnvironmentPreference()` का इस्तेमाल करके, स्काईबॉक्स को null पर सेट करने से, दस्तावेज़ में बताए गए तरीके के मुताबिक, स्काईबॉक्स पूरी तरह से काला नहीं होता. इससे सिस्टम के डिफ़ॉल्ट स्काईबॉक्स पर असर पड़ सकता है या मौजूदा स्काईबॉक्स में कोई बदलाव नहीं होगा.
- SceneCore क्लाइंट को अपने ऐप्लिकेशन की डिपेंडेंसी के लिए, अपने Gradle कॉन्फ़िगरेशन में
implementation(“com.google.guava:listenablefuture-1.0”)
जोड़ना चाहिए. आने वाले समय में, scenecore इस लाइब्रेरी कोapi
डिपेंडेंसी के तौर पर शामिल करेगा. इसलिए, क्लाइंट को इसे साफ़ तौर पर बताने की ज़रूरत नहीं होगी. - SceneCore,
com.google.guava:guava-31.1-android
औरcom.google.protobuf:protobuf-javalite
को ट्रांज़िटिव डिपेंडेंसी के तौर पर शामिल करता है. अगर इसकी वजह से आपके बिल्ड में डुप्लीकेट क्लास की गड़बड़ियां होती हैं, तो इन दो डिपेंडेंसी को सुरक्षित तरीके से हटाया जा सकता है. - अगर आपका ऐप्लिकेशन SceneCore का इस्तेमाल करता है और ProGuard को चालू करता है, तो सेशन बनाते समय वह क्रैश हो जाएगा. इस समस्या को हल करने के लिए, ProGuard को बंद करें. ProGuard को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.