Jetpack SceneCore

3D कॉन्टेंट की मदद से, Android XR सीन ग्राफ़ बनाएं और उसमें बदलाव करें.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
19 नवंबर, 2025 - - - 1.0.0-alpha09

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

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

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

Groovy

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

    // Optional dependencies for asynchronous conversions
    implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09"

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

Kotlin

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

    // Optional dependencies for asynchronous conversions
    implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09")

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

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

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

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

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

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

वर्शन 1.0

वर्शन 1.0.0-alpha09

19 नवंबर, 2025

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

नई सुविधाएं

  • यह एक एपीआई जोड़ता है. इसकी मदद से, ScenePose को वापस पाया जा सकता है. यह एपीआई, परसेप्शन स्पेस के ऑरिजिन पोज़ और परसेप्शन स्पेस के ऑरिजिन के हिसाब से पोज़ को दिखाता है. (I5b50a)
  • getGravityAlignedPose फ़ंक्शन जोड़ा गया. ग्रैविटी के हिसाब से अलाइन की गई पोज़ में, रोटेशन के पिच और रोल को अनदेखा किया जाता है. (I5ae21)
  • AnchorEntity.State कॉन्स्टेंट टाइप को Ints से बदलकर State सबटाइप कर दिया गया है. (Ib0c49)
  • getChildren() को Entity इंटरफ़ेस में जोड़ा गया. MainPanelEntity लाइफ़साइकल को अपडेट किया गया. (Ia69d6)

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

  • PointerCaptureComponent.PointerCaptureState कॉन्स्टेंट टाइप को Ints से बदलकर PointerCaptureState सबटाइप कर दिया गया है. (Ic888a)
  • Scene.spatialCapabilities अब Int फ़ील्ड के बजाय Set<SpatialCapability> टाइप का है. SpatialCapability कॉन्स्टेंट के नाम बदल दिए गए हैं. (I9c109)
  • SurfaceEntity कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर SurfaceEntity सबटाइप कर दिया गया है. (I419ed)
  • SpatializerConstant कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर SpatializerConstant सबटाइप कर दिया गया है. (Ia0e18)
  • TextureSampler कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर TextureSampler सबटाइप कर दिया गया है. (I44078)
  • SpatialVisibility कॉन्स्टेंट टाइप को Ints से बदलकर SpatialVisibility सबटाइप कर दिया गया है. (I70739)
  • ResizeEvent.ResizeState कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर ResizeState सबटाइप कर दिया गया है. (I384d5)
  • InputEvent कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर, इनके संबंधित एनक्लोज़िंग टाइप से इनहेरिट करने के लिए बदल दिया गया है. (I82817)
  • GltfModelEntity.AnimationState कॉन्स्टेंट टाइप को Ints से बदलकर AnimationState सबटाइप कर दिया गया है. (I24f4e)
  • AlphaMode कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर AlphaMode सबटाइप कर दिया गया है. (I27b56)
  • Space कॉन्स्टेंट टाइप को Ints से बदलकर Space के सबटाइप कर दिया गया है. (I9255b)
  • ScenePose.hitTest और इससे जुड़े तरीके, अब कोई इंटरसेक्शन न मिलने पर null दिखाते हैं. इसके बजाय, वे शून्य hitPosition के साथ HitTestResult दिखाते थे. HitTestResult.hitPosition अब शून्य नहीं हो सकता. (I1400a)
  • ActivityPose के रेफ़रंस को ScenePose में बदला गया. (I7fe43)

वर्शन 1.0.0-alpha08

22 अक्टूबर, 2025

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

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

  • ActivityPanelEntity.moveActivity का नाम बदलकर transferActivity कर दिया गया (I273c5, b/430332856)

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

  • :xr:scenecore:scenecore-spatial-rendering और :xr:scenecore:scenecore-spatial-core को :xr:scenecore:scenecore (I6ab65, b/447000520) के लिए, लागू करने से जुड़ी डिपेंडेंसी के तौर पर जोड़ा गया
  • अगर सेशन खत्म होने के बाद session.scene को ऐक्सेस किया जाता है, तो अपवाद दिखता है. (I77e6f)

वर्शन 1.0.0-alpha07

24 सितंबर, 2025

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

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

  • fixedAspectRatio का नाम बदलकर isFixedAspectRatioEnabled कर दिया गया है. साथ ही, इसे बूलियन प्रॉपर्टी बना दिया गया है (I5c4e8, b/440588971)
  • Scenecore नकली प्रॉडक्ट अब xr:scenecore:scenecore-testing मॉड्यूल में दिखते हैं. (Idd951)
  • shouldAutoHideContent का नाम बदलकर isAutoHideContentWhileResizingEnabled और shouldAlwaysShowOverlay का नाम बदलकर isAlwaysShowOverlayEnabled कर दिया गया (I97c36, b/432335421)
  • पढ़ने में आसानी के लिए, SceneCore TextureSampler कॉन्स्टेंट अपडेट किए गए हैं. उदाहरण के लिए, TextureSampler.MinFilter.LINEAR अब TextureSampler.MIN_FILTER_LINEAR है (Ib159c)
  • सीन के setKeyEntity सेटर को keyEntity वैरिएबल में मर्ज कर दिया गया है. keyEntity को AnchorEntity जैसी ऐसी इकाई पर सेट करने से जिसे बदला नहीं जा सकता, बूलियन फ़ॉल्स वैल्यू के बजाय IllegalArgumentException दिखेगा. (I62080, b/428721695, b/422215745)
  • सीन के SpatialModeChangeListener वैरिएबल को setSpatialModeChangedListener से बदल दिया गया है. यह SpatialModeChangedListener के बजाय Consumer<SpatialModeChangeEvent> लेता है. setSpatialModeChangedListener अब वैकल्पिक तौर पर, एक्ज़ीक्यूटर को शामिल कर सकता है. (I62080, b/428721695, b/422215745)
  • ActivityPanelEntity.startActivity (I64344, b/430332856, b/430333040) से bundle पैरामीटर हटाया गया
  • SpatializerConstants.SOURCE_TYPE_BYPASS का नाम बदलकर SpatializerConstants.SOURCE_TYPE_DEFAULT कर दिया गया. (Ifc7fe, b/422215565)
  • SpatialSoundPool.PLAY_FAILED कॉन्स्टेंट जोड़ा गया. (Ifc7fe, b/422215565)
  • SpatialSoundPool.play तरीकों में डिफ़ॉल्ट तर्क जोड़े गए. (Ifc7fe, b/422215565)
  • SpatialAudioTrackBuilder में, सेटर की रिटर्न वैल्यू हटाई गई. (Ifc7fe, b/422215565)
  • SurfaceEntity में बदलाव
    • SurfaceEntity.CanvasShape का नाम बदलकर Shape कर दिया गया
    • SurfaceEntity.CanvasShape.Vr180Hemisphere का नाम बदलकर Hemisphere कर दिया गया
    • SurfaceEntity.CanvasShape.Vr360Sphere का नाम बदलकर Sphere कर दिया गया
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather का नाम बदलकर RectangleFeather कर दिया गया
    • SurfaceEntity.EdgeFeathingParams.SolidEdge का नाम बदलकर NoFeathering कर दिया गया
    • SurfaceEntity.ContentSecurityLevel का नाम बदलकर SurfaceProtection कर दिया गया
    • SurfaceEntity.ContentSecurityLevel.{values} ने SURFACE_PROTECTION_ प्रीफ़िक्स जोड़ा.
    • SurfaceEntity.SuperSampling.{$values} ने SUPER_SAMPLING_ प्रीफ़िक्स जोड़ा
    • SurfaceEntity.StereoMode.{values} ने STEREO_MODE_ प्रीफ़िक्स जोड़ा
    • SurfaceEntity.ContentColorMetadata.maxCLL का नाम बदलकर maxContentLightLevel कर दिया गया (I7eb5f, b/422216050, b/427529950)
  • launchActivity का नाम बदलकर startActivity कर दिया गया (I7db90, b/430332856)
  • Scene.activitySpaceRoot को हटा दिया गया है. इसके बजाय, Scene.activitySpace का इस्तेमाल करें. (I05ee8, b/378706624, b/422215745)
  • configureBundleForFullSpaceModeLaunch और configureBundleForFullSpaceModeLaunchWithEnvironmentInherited का नाम बदलकर, createBundleForFullSpaceModeLaunch और createBundleForFullSpaceModeLaunchWithEnvironmentInherited कर दिया गया है. साथ ही, इन्हें LaunchUtils.kt फ़ाइल में टॉप-लेवल के तरीकों के तौर पर ले जाया गया है. ये सेशन को पहले पैरामीटर के तौर पर लेते हैं (I64a2c, b/437186050)
  • GroupEntity फ़ैक्ट्री अब Entity के बजाय GroupEntity टाइप दिखाता है. (I66042)

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

  • डिसपोज़ करने के बाद किसी एंटिटी इंस्टेंस का इस्तेमाल करने पर, IllegalStateException को थ्रो करें. (I90990, b/427314036, b/432063442)

वर्शन 1.0.0-alpha06

13 अगस्त, 2025

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

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

  • SceneCore के BaseEntity और BaseScenePose एपीआई पर लगी पाबंदी हटाएं (88c0ff6)

वर्शन 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 को जोड़ने/हटाने के तरीकों से बदला गया. (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 पर सेट किया गया. एक्सआर पैकेज के लिए, अब भी रनटाइम में 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 के hitPosition पर मौजूद InputEvent के HitInfo पर मौजूद hitPosition के क्रैश होने पर, InteractableComponent क्रैश हो सकता था. ऐसा तब होता था, जब सिस्टम से मिला 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 वैल्यू: MULTIVIEW_LEFT_PRIMARY और MULTIVIEW_RIGHT_PRIMARY के ज़रिए, MV-HEVC फ़ॉर्मैट में वीडियो चलाने की सुविधा देता है.
  • PanelEntity.setSize और PanelEntity.getSize अब पैरंट स्पेस में साइज़ दिखाते हैं.
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha, और Entity.getAlpha अब नया पैरामीटर relativeTo लेते हैं. इससे अलग-अलग स्पेस के हिसाब से वैल्यू को पाने/सेट करने की अनुमति मिलती है. इसके लिए, Parent, Activity, और Real World spaces वैल्यू का इस्तेमाल किया जा सकता है. इस पैरामीटर के लिए डिफ़ॉल्ट वैल्यू Parent है.
  • SessionExt.kt में जोड़ी गई Spatial Visibility Callback एक्सटेंशन के तरीके. इनका इस्तेमाल यह मॉनिटर करने के लिए किया जाता है कि सीन का कॉन्टेंट, उपयोगकर्ता के फ़ील्ड ऑफ़ व्यू में कब आता है और कब बाहर जाता है.
  • setPointSourceParams को SpatialAudioTrack में जोड़ दिया गया है. इससे ट्रैक बनने के बाद भी पैरामीटर अपडेट किए जा सकते हैं.
  • Scenecore एपीआई के रेफ़रंस के साथ एक नई क्लास, सीन जोड़ी गई है. सीन को सेशन की एक्सटेंशन प्रॉपर्टी के तौर पर ऐक्सेस किया जा सकेगा. SessionExt के अंदर मौजूद फ़ंक्शन को Scene में ले जाया गया है. इसलिए, इंपोर्ट को अडजस्ट करना होगा. उदाहरण के लिए, 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 अटैच न होने पर, यह गड़बड़ी के लेवल के लॉग के बजाय सूचना के लेवल का लॉग देगा.
  • 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 का इस्तेमाल करने के लिए, कम से कम SDK 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”) जोड़ना चाहिए. आने वाले समय में, Scenekore इस लाइब्रेरी को api डिपेंडेंसी के तौर पर शामिल करेगा. इसलिए, क्लाइंट को इसे साफ़ तौर पर बताने की ज़रूरत नहीं होगी.
  • SceneCore, com.google.guava:guava-31.1-android और com.google.protobuf:protobuf-javalite को ट्रांज़िटिव डिपेंडेंसी के तौर पर गलत तरीके से शामिल करता है. अगर इसकी वजह से आपके बिल्ड में डुप्लीकेट क्लास की गड़बड़ियां होती हैं, तो इन दो डिपेंडेंसी को सुरक्षित तरीके से हटाया जा सकता है.
  • अगर आपका ऐप्लिकेशन SceneCore का इस्तेमाल करता है और ProGuard को चालू करता है, तो सेशन बनाते समय वह क्रैश हो जाएगा. इस समस्या को हल करने के लिए, ProGuard को बंद करें. ProGuard को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.