Jetpack SceneCore

3D कॉन्टेंट की मदद से, Android XR सीन ग्राफ़ बनाएं और उसमें बदलाव करें.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
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 को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.