Jetpack SceneCore

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

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

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

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

ग्रूवी

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

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

Kotlin

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

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

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

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

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

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

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

संस्करण 1.0

वर्शन 1.0.0-alpha16

17 जून, 2026

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

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

  • CustomMesh.BuilderFromMeshData और CustomMesh.BuilderFromMeshBuffer में addVertexData, setIndexData, और addSubset के लिए ओवरलोड जोड़े गए. इन ओवरलोड की मदद से डेवलपर, रॉ डेटा और पैरामीटर को सीधे तौर पर पास कर सकते हैं.जैसे, ByteBuffer, offset, size, topology, indexOffset, indexCount. इसके लिए, उन्हें ByteBufferRegion या MeshSubset जैसे इंटरमीडियरी ऑब्जेक्ट में रैप करने की ज़रूरत नहीं होती. (I84d5c)
  • Scene.requestFullSpaceMode() और Scene.requestHomeSpaceMode() का नाम बदलकर, requestFullSpace() और requestHomeSpace() कर दिया गया है. "होम स्पेस मोड" और "फ़ुल स्पेस मोड" के बारे में बताने वाले अन्य तरीकों और दस्तावेज़ों को भी इसी तरह अपडेट किया गया है. (I45751)
  • सार्वजनिक टेस्ट एपीआई PanelEntityTester और MainPanelEntityTester (I961e4) उपलब्ध कराता है
  • SoundEffectPoolComponent (I4a750) में pointSourceParams प्रॉपर्टी जोड़ी जा रही है
  • यह सार्वजनिक टेस्ट एपीआई MovableComponentTester (I0c972) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई PointerCaptureComponentTester (Ic0d4f) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई ActivityPanelEntityTester (I837c4) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई ResizableComponentTester (I0a3a4) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई BoundsComponentTester. (Iefd53) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई SpatialMediaPlayerTester (Ia3e09) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई SpatialEnvironmentTester (Icf60f) उपलब्ध कराता है
  • सार्वजनिक टेस्ट एपीआई GltfModelTester और SceneCoreTestRule.getGltfModelTester उपलब्ध कराता है. (I33fcb)
  • यह सार्वजनिक टेस्ट एपीआई InteractableComponentTester उपलब्ध कराता है. (Ia7096)
  • यह सार्वजनिक टेस्ट एपीआई SurfaceEntityTester उपलब्ध कराता है. (Ic0740)
  • यह सार्वजनिक टेस्ट एपीआई GltfModelEntityTester, TestGltfModelNode, और TestGltfAnimation उपलब्ध कराता है. (I72c4d)
  • सार्वजनिक टेस्ट एपीआई SceneTester और SceneCoreTestRule.sceneTester उपलब्ध कराता है. (Ib4ec5)
  • सार्वजनिक टेस्ट एपीआई PerceptionSpaceTester और SceneCoreTestRule.perceptionSpaceTester उपलब्ध कराता है. (Icf739)
  • यह सार्वजनिक टेस्ट एपीआई MeshEntityTester उपलब्ध कराता है. (I63801)
  • यह सार्वजनिक टेस्ट एपीआई ImageBasedLightingAssetTester और SceneCoreTestRule.getTester ओवरलोड उपलब्ध कराता है. (I57ec4)
  • यह सार्वजनिक टेस्ट एपीआई TextureTester (Ia865b) उपलब्ध कराता है
  • सार्वजनिक टेस्ट एपीआई PositionalAudioComponentTester (Icd96e) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई SpatialSoundPoolTester (Ia3531) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई SoundEffectPoolTester (If349a) उपलब्ध कराता है
  • सार्वजनिक टेस्ट एपीआई ActivitySpaceTester और SceneCoreTestRule.activitySpaceTester उपलब्ध कराता है. (I2d5c2)
  • यह SpatialWindowTester (I41837) के लिए, सार्वजनिक टेस्ट एपीआई उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई AnchorEntityTester (I68404) उपलब्ध कराता है
  • यह सार्वजनिक टेस्ट एपीआई इंटरफ़ेस SceneCoreTestRule उपलब्ध कराता है. (Ic72d3)
  • PixelDensity क्लास जोड़ा गया है और इसे Scene#virtualPixelDensity के ज़रिए दिखाया गया है, ताकि ActivitySpace में सटीक फ़िज़िकल डाइमेंशन मैपिंग के लिए, हार्डवेयर पर आधारित पिक्सल-प्रति-मीटर का अनुपात दिया जा सके. (I0e3ac)
  • कस्टम मेश बनाने और रेंडर करने के लिए, सार्वजनिक एपीआई जोड़े गए. (I7ad2f)
  • VertexLayout एपीआई को अपडेट किया गया है, ताकि VertexBufferLayout की सूची का इस्तेमाल किया जा सके. इसमें हर VertexBufferLayout, एक वर्टेक्स बफ़र में मौजूद एट्रिब्यूट के बारे में बताता है. इससे वर्टेक्स डेटा को ज़्यादा आसानी से व्यवस्थित किया जा सकता है. इसमें कस्टम स्ट्राइड और ऑफ़सेट के साथ इंटरलीव किए गए एट्रिब्यूट शामिल हैं. (Ic426b)
  • यह MovableComponent.createTrackingMovable, ARCore ट्रैक किए जा सकने वाले ऑब्जेक्ट को ऐक्टिविटी स्पेस के हिसाब से पोज़ में बदलने के लिए उपलब्ध कराता है. (I12249)
  • Entity.create में पैरंट की डिफ़ॉल्ट वैल्यू को null पर अपडेट कर दिया गया है. (Ic3145)
  • Entity को इंटरफ़ेस के बजाय क्लास के तौर पर अपडेट किया गया है. अब यह सभी इकाई टाइप के लिए बेसिक क्लास है. इस बदलाव के तहत, BaseEntity को हटा दिया गया है. (I7fbc9)
  • GltfModel, ExrImage, और ImageBasedLightingAsset अब AutoCloseable को लागू करते हैं, ताकि Kotlin के use ब्लॉक का इस्तेमाल करके, संसाधन को मैनेज किया जा सके. (I1ac79)
  • स्पेशल एनवायरमेंट लाइटिंग को तय करने के लिए, ExrImage की जगह ImageBasedLightingAsset क्लास को पेश किया गया. ExrImage को बंद कर दिया गया है और इसे सार्वजनिक एपीआई से हटा दिया गया है. SpatialEnvironmentPreference को ImageBasedLightingAsset का इस्तेमाल करने के लिए अपडेट किया गया है. (I6c92a)
  • SpatialEnvironment में मौजूद skybox पैरामीटर का नाम बदलकर imageBasedLightingAsset कर दिया गया है, ताकि इसके मकसद को बेहतर तरीके से दिखाया जा सके. साथ ही, यह साफ़ तौर पर बताया गया है कि विज़ुअल स्काईबॉक्स टेक्सचर को ज्यामिति पैरामीटर में शामिल किया जाना चाहिए. (I24d4a)
  • स्पेशल एंटिटी अब स्पेशल एपीआई लेवल 1 और 2 पर पिक्सल-टू-मीटर कैलकुलेशन के लिए, डिवाइस की स्टेबल डेंसिटी का इस्तेमाल करती हैं. इससे सिस्टम की डिसप्ले डेंसिटी में बदलाव होने के बावजूद, साइज़ एक जैसा रहता है. (I37051)

वर्शन 1.0.0-alpha15

19 मई, 2026

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

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

  • Entity.dispose() को अब सार्वजनिक एपीआई के तौर पर नहीं दिखाया जाएगा. ऐप्लिकेशन, Entity इंस्टेंस पर dispose() को कॉल करने के बजाय, इंस्टेंस को क्लीन किया जा सकता है. इसके लिए, parent को null पर सेट करें और उन इंस्टेंस के सभी मज़बूत रेफ़रंस मिटाएं. (I396c9)
  • SoundEffectPool के set/clearOnLoadCompleteListener तरीके मिटा दिए गए हैं. इसके बजाय, add/removeLoadCompleteListener का इस्तेमाल करें. (Iae78d)
  • सीन के set/clearSpatialVisibilityChangedListener को add/removeSpatialVisibilityChangedListener से बदल दिया गया है. (I67dff)
  • SceneCore की सभी add/removeOnFooListener विधियों का नाम बदलकर add/removeFooListener कर दिया गया है. साथ ही, नाम से On को हटा दिया गया है. (Ibe50b)
  • एक साथ कई लिसनर को सपोर्ट करने के लिए, AnchorEntity.setOnOriginChangedListener और AnchorEntity.setOnStateChangedListener तरीकों को add/removeFooListener तरीकों से बदल दिया गया है. (I13749)
  • AnchorEntity.State.TIMEDOUT का नाम बदलकर State.TIMED_OUT कर दिया गया. (Id2b8d)
  • कॉम्पोनेंट एपीआई को फिर से फ़ैक्टर किया गया है, ताकि इसे ज़्यादा सुरक्षित बनाया जा सके और इसमें ज़्यादा सुविधाएं जोड़ी जा सकें. Component अब एक ऐब्स्ट्रैक्ट क्लास है. सीधे तौर पर कॉल करने से रोकने के लिए, onAttach() और onDetach() तरीकों को अब protected कर दिया गया है. कॉम्पोनेंट के लाइफ़साइकल को मैनेज करने के लिए, कृपया Entity.addComponent() और Entity.removeComponent() का इस्तेमाल करें. (Id04e8)
  • SceneCore के PlaneSemanticType PlaneOrientation कॉन्स्टेंट को Ints से कस्टम टाइप में माइग्रेट कर दिया गया है. उनके ANY कॉन्स्टेंट हटा दिए जाएंगे. क्लाइंट को इसके बजाय, सभी ज़रूरी कॉन्स्टेंट की सूची बनानी चाहिए या नए .ALL इम्यूटेबल सेट कॉन्स्टेंट का इस्तेमाल करना चाहिए. AnchorEntity फ़ैक्ट्री मेथड अब एक वैल्यू के बजाय, इन टाइप का सेट स्वीकार करता है. (Ib1033)
  • एक्सपेरिमेंट के तौर पर उपलब्ध Custom Mesh API में, कंकाल वाली ऐनिमेशन (स्किनिंग) के लिए सहायता जोड़ी गई. डेवलपर अब कस्टम मेश को ऐनिमेट कर सकते हैं. इसके लिए, उन्हें MeshEntity बनाते समय boneCount तय करना होगा. साथ ही, MeshEntity.setBoneTransforms() का इस्तेमाल करके ऐनिमेशन को रीयल-टाइम में अपडेट करना होगा. (Id8ba2, b/496692490)
  • एक्सपेरिमेंट के तौर पर CustomMesh एपीआई लॉन्च किया गया. डेवलपर अब CustomMesh, MeshBuffer, और MeshEntity का इस्तेमाल करके, अपने सीन में प्रोग्राम के हिसाब से 3D ज्यामिति बना सकते हैं और उसे रेंडर कर सकते हैं. (I94617)
  • androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD को हटाया गया. इसके बजाय, SourceType.SOUND_FIELD का इस्तेमाल करें. (Ia68b9)
  • स्पेशल ऑडियो कॉम्पोनेंट जोड़े जा रहे हैं: PositionalAudioComponent, SoundEffectPoolComponent, और SoundFieldAudioComponent (Ieda89)
  • AnchorEntity.getAnchor को AnchorEntity.anchor से बदल दिया गया है. अब AnchorEntity को ARCore Anchor (I5c7c8) से बनाए जाने पर, Anchor दिखेगा
  • ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity, और SurfaceEntity फ़ैक्ट्री के तरीकों में, parent पैरामीटर की डिफ़ॉल्ट वैल्यू को ActivitySpace से बदलकर null कर दिया गया है. किसी इकाई को सीन ग्राफ़ से जोड़ने और उसे दिखाने के लिए, डेवलपर को अब इंस्टैंटिएशन के दौरान या Entity.parent = ... (Ie7cc1) के ज़रिए, उसके पैरंट को साफ़ तौर पर सेट करना होगा

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

  • SceneCore अब Entity के उन इंस्टेंस को अपने-आप वापस ले लेता है जो फ़ैंटम रीचेबल हो जाते हैं. इससे डेवलपर को संसाधनों को खाली करने के लिए, dispose() को साफ़ तौर पर लागू करने की ज़रूरत नहीं पड़ती. यह पक्का करने के लिए कि [Entity] इंस्टेंस को सही तरीके से वापस पाया गया है, डेवलपर को यह करना चाहिए:
    • इसके parent को null पर सेट करके, इसे सीन ग्राफ़ से अलग करें.
    • अपने कोड में इंस्टेंस के सभी मज़बूत रेफ़रंस हटा दें.
    • खास इकाई के टाइप के बारे में नोट: जिन इकाइयों को पैरंट नहीं बनाया जा सकता (जैसे कि AnchorEntity), उनके लिए डेवलपर को एक मज़बूत रेफ़रंस बनाए रखना होगा. ऐसा तब तक करना होगा, जब तक इंस्टेंस का इस्तेमाल किया जा रहा है. अगर सभी रेफ़रंस हटा दिए जाते हैं, तो ये इंस्टेंस फ़ैंटम रीचेबल बन जाएंगे और इन पर अपने-आप दावा कर लिया जाएगा. (I83fe4)
  • सभी SceneCore लाइब्रेरी के लिए, Proguard के कीप रूल को कम किया गया है. (I98447)

मौजूदा समस्याएं

  • बंद ExoPlayer इंस्टेंस वाले Entity में PositionalAudioComponent अटैच करने पर, क्रैश हो जाएगा. ExoPlayer के बंद होने पर, setPointSourceParams को कॉल न करें या स्पेशल ऑडियो कॉम्पोनेंट को अटैच/डिटैच न करें. इस समस्या को अगले वर्शन में ठीक कर दिया जाएगा.

वर्शन 1.0.0-alpha14

6 मई, 2026

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

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

  • TrackingState और VpsAvailabilityResult को androidx.xr.arcore package में ले जाया गया है. साथ ही, androidx.xr.runtime में मौजूद टाइप अब इस्तेमाल नहीं किए जा सकते. (Ic7930, b/480462213)
  • Plane.Type का नाम बदलकर PlaneType कर दिया गया. (I8c90c, b/482675376)
  • Plane.Label का नाम बदलकर PlaneLabel कर दिया गया. (Ic6b67, b/482675376)
  • androidx.xr.runtime.FieldOfView का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, androidx.xr.runtime.math.FieldOfView का इस्तेमाल करें. (Ia01a0, b/480233045)
  • Matrix4.pose का नाम बदलकर Matrix4.toPose() कर दिया गया है. अब पोज़ प्रॉपर्टी का इस्तेमाल नहीं किया जा सकता. (I329b4, b/493383490)
  • HandJointType enum वैल्यू का नाम बदला गया. (Ifbc83, b/482670596)
  • Component को पसंद के मुताबिक लागू करने की अनुमति देने के लिए, Component.onAttach और onDetach को सार्वजनिक एपीआई के तौर पर उपलब्ध कराएं. (I0ca1f)
  • स्पेशल ऑडियो कॉम्पोनेंट (I39ddd, b/489421980, b/436642086, b/436642499) जोड़े गए
  • PointSourceParams से इकाई हटाएं. इसके बजाय, इकाई का इस्तेमाल सीधे तौर पर SpatialAudioTrack, SpatialSoundPool, और SpatialMediaPlayer के साथ किया जाएगा (Ib3685, b/489421980, b/436634048)
  • DeviceTrackingMode.LAST_KNOWN का नाम बदलकर SPATIAL_LAST_KNOWN कर दिया गया है. हालांकि, अब भी इसका इस्तेमाल किया जा सकता है. साथ ही, 3DoF ट्रैकिंग के लिए INERTIAL_LAST_KNOWN जोड़ा गया है. इसके अलावा, TRACKING_DEGRADED को TrackingState में जोड़ा गया है. (Ie661c, b/445466590)
  • GroupEntity अब काम नहीं करता. अगर आपको सिर्फ़ बुनियादी Entity फ़ंक्शन वाली Entity चाहिए, तो Entity.create को कॉल करें. इससे Entity इंटरफ़ेस वापस आ जाएगा. (I4c450, b/473867483)
  • XrLog API जोड़ा गया. JetpackXR में लॉग इन करने की सुविधा चालू करने के लिए, XrLog.isEnabled को true पर सेट करें. साथ ही, लॉग लेवल सेट करने के लिए XrLog.Level का इस्तेमाल करें. (I76a1f, b/463460895, b/487378441)

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

  • Scene.keyEntity अब डिफ़ॉल्ट रूप से mainPanelEntity पर सेट है. (I6a3ef)

वर्शन 1.0.0-alpha13

25 मार्च, 2026

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

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

  • Session.create से unscaledGravityAlignedActivitySpace फ़्लैग हटाया गया. ActivitySpace अब हमेशा बिना स्केल किए हुए और ग्रेविटी के हिसाब से अलाइन होता है. (If6f11, b/458173423)
  • GltfModelEntity से, बंद किए गए setMaterialOverride और clearMaterialOverride फ़ंक्शन हटा दिए गए हैं. अब इन्हें अलग-अलग GltfModelNode पर कॉल किया जाता है. (I2e5d2)
  • PanelEntity में transformPixelCoordinatesToLocalPosition और transformNormalizedCoordinatesToLocalPosition को जोड़ा गया है. साथ ही, एक्सपेरिमेंट के तौर पर इस्तेमाल किए जाने वाले उन तरीकों को हटा दिया गया है जो Vector3 की पोज़िशन के बजाय पोज़ की जानकारी देते थे. (Ib6960, b/460123106, b/458333591)
  • GltfAnimation में glTF ऐनिमेशन को कंट्रोल करने के लिए, GltfAnimation एपीआई जोड़े गए.SceneCore (I2c172, b/466065486, b/465819070, b/465818617)
  • ScenePose.activitySpacePose का नाम बदलकर ScenePose.poseInActivitySpace किया गया (I8f175, b/427822261)
  • Scenecore Projected Runtime Implementation जोड़ा गया (I9c4ab, b/476440158)
  • मुख्य पैनल की इकाई का साइज़ बदलते समय, हो सकता है कि वह ActivitySpace ओरिजन पर अपनी जगह बदल ले. पैनल को उसकी मूल जगह पर वापस लाने के लिए, मैन्युअल तरीके से या प्रोग्राम के हिसाब से पैनल की जगह बदलने के अलावा कोई और तरीका नहीं है. इस गड़बड़ी को आने वाले वर्शन में ठीक कर दिया जाएगा. (b/489427007).
  • कुछ मामलों में, SurfaceEntity और पैनल के अलावा अन्य तरह की इकाइयों के लिए, MovableComponent का विकल्प नहीं दिखता है. MovableComponent.size को साफ़ तौर पर सेट करने पर, अफ़ोर्डेंस दिखेगा. इस बग को आने वाले वर्शन (b/490983469) में ठीक कर दिया जाएगा.

वर्शन 1.0.0-alpha12

25 फ़रवरी, 2026

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

मौजूदा समस्याएं

  • एंकर की गई इकाइयां, कुछ सेकंड के बाद अपनी एंकर की गई जगह से गतिविधि वाली जगह पर स्नैप हो सकती हैं.
  • SurfaceEntity इंस्टेंस बनाते समय, ऐप्लिकेशन क्रैश हो सकते हैं. इस समस्या को androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 और इसके बाद के वर्शन में ठीक कर दिया गया है. जिन ऐप्लिकेशन पर असर पड़ा है उन्हें नए वर्शन पर अपडेट किया जाना चाहिए.

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

  • ActivitySpace.addOnSpaceUpdatedListener और ActivitySpace.removeOnSpaceUpdatedListener का नाम बदलकर addOnOriginChangedListener और removeOnOriginChangedListener कर दिया गया है. AnchorEntity.setOnSpaceUpdatedListener का नाम बदलकर setOnOriginChangedListener कर दिया गया है. (I5d8fb)
  • FakeEntity में सार्वजनिक नाम वाली प्रॉपर्टी जोड़ी गई और FakePanelEntity पर व्यू को सार्वजनिक किया गया. (Ifa1f9)

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

  • नई सिस्टम इमेज (I57d04) पर पिक्सल डेंसिटी के कैलकुलेशन से जुड़ी समस्या ठीक की गई

वर्शन 1.0.0-alpha11

28 जनवरी, 2026

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

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

  • PerceivedResolutionResult.InvalidCameraView का नाम बदलकर PerceivedResolutionResult.InvalidRenderViewpoint कर दिया गया है, क्योंकि अब getPerceivedResolution एपीआई, CameraViewScenePose के बजाय ARCore के RenderViewpoint एपीआई पर काम करते हैं. यह नाम, नए तरीके से लागू किए गए बदलावों को बेहतर तरीके से दिखाता है. (I8c967, b/446989745, b/419311998)
  • PanelEntity/SurfaceEntity.getPerceivedResolution के तरीके अब डेवलपर की ओर से दिए गए RenderViewpoint को आर्ग्युमेंट के तौर पर लेते हैं. इससे पहले, रनटाइम मनमाने तरीके से RenderViewpoint चुनता था, जिसका इस्तेमाल अनुमानित रिज़ॉल्यूशन की गिनती में किया जाता था. (I8c967, b/446989745, b/419311998)
  • SpatialUser, ScenePose.Head, और ScenePose.CameraView को हटा दिया गया है. इन एपीआई की सुविधाओं को, Jetpack XR के लिए ARCore में मौजूद ArDevice और RenderViewpoint एपीआई के ज़रिए ऐक्सेस किया जा सकता है. उपयोगकर्ता के सिर या बाईं या दाईं आंख से जुड़े ScenePose को पाने के लिए, डेवलपर ARCore API का इस्तेमाल करके सही पोज़ के साथ PerceptionSpace.getScenePoseFromPerceptionPose का इस्तेमाल कर सकते हैं. (I2f69c, b/446989745)

वर्शन 1.0.0-alpha10

03 दिसंबर, 2025

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

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

  • transformPixelCoordinatesToPose और transformNormalizedCoordinatesToPose को PanelEntity (I462b3) में जोड़ा गया
  • SceneCore (I570b9) में मौजूद लॉजिक के आधार पर, SceneCore Runtime में Utils नाम की हेल्पर क्लास जोड़ी गई

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

  • सेशन बंद होने पर SpatialModeChangeEvent मिलने पर क्रैश होने की समस्या को ठीक किया गया (If44e8)
  • उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह से, किसी गतिविधि को छोड़ने या उसमें फिर से शामिल होने पर IllegalStateException दिख सकता था. (Ibff1c)

वर्शन 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 कॉन्स्टेंट टाइप को इंट से बदलकर PointerCaptureState सबटाइप कर दिया गया है. (Ic888a)
  • Scene.spatialCapabilities अब इंट फ़ील्ड के बजाय 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 कॉन्स्टेंट टाइप को इंट से बदलकर AnimationState सबटाइप कर दिया गया है. (I24f4e)
  • AlphaMode कॉन्स्टेंट टाइप के नाम बदल दिए गए हैं. साथ ही, इन्हें Ints से बदलकर AlphaMode सबटाइप कर दिया गया है. (I27b56)
  • Space कॉन्स्टेंट टाइप को Ints से बदलकर Space subtypes कर दिया गया है. (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 को ऐसी Entity पर सेट करने से जिसे बदला नहीं जा सकता, जैसे कि AnchorEntity, बूलियन फ़ॉल्स वैल्यू दिखाने के बजाय IllegalArgumentException दिखेगा. (I62080, b/428721695, b/422215745)
  • सीन के SpatialModeChangeListener वैरिएबल को setSpatialModeChangedListener से बदल दिया गया है. यह SpatialModeChangedListener के बजाय Consumer<SpatialModeChangeEvent> लेता है. setSpatialModeChangedListener अब Executor को वैकल्पिक तौर पर ले सकता है. (I62080, b/428721695, b/422215745)
  • ActivityPanelEntity.startActivity से bundle पैरामीटर हटाया गया (I64344, b/430332856, b/430333040)
  • 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)
  • SpatialPointerIcon में SpatialPointerComponent अब शून्य नहीं हो सकता. सिस्टम के डिफ़ॉल्ट पॉइंटर आइकॉन का इस्तेमाल करने के लिए, शून्य के बजाय 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 का नाम बदलकर ResizableComponent.forceShowResizeOverlay कर दिया गया (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)

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

  • छोटे किए गए क्लाइंट के लिए, AbstractMethodError को रोकने के लिए, Jetpack XR Scenecore ProGuard के नियम को अपडेट किया गया है. (I91a01)
  • Jetpack XR SceneCore के लिए Proguard minification की सुविधा को बेहतर बनाने के लिए, कुछ और सुधार किए गए हैं (I4f47e)
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, InteractableComponent के hitPosition पर मौजूद HitInfo का hitPosition क्रैश हो सकता था. ऐसा तब होता था, जब सिस्टम से मिला hitPosition शून्य होता था (I7a695)InputEvent
  • Config *Mode vals का नाम बदलकर, उनके काम करने के तरीके के हिसाब से रखा गया है. (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 के अंदर मौजूद फ़ंक्शन को सीन में ले जाया गया है. इसलिए, इंपोर्ट को अडजस्ट करना होगा. उदाहरण के लिए, 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 इंस्टेंस, अब प्लैटफ़ॉर्म पर रजिस्टर हो गया है. इससे ऐप्लिकेशन को डीबग करने में मदद मिलेगी.

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

  • PanelEntity, MovableComponent, और AnchorPlacement को एक साथ ले जाने पर होने वाली क्रैश की समस्या को ठीक किया गया
  • उस समस्या को ठीक किया गया है जिसमें 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 की मदद से कोड छोटा करने की सुविधा अब उपलब्ध है

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

  • Jetpack XR SceneCore के लिए Proguard minification की सुविधा को बेहतर बनाने के लिए, कुछ और गड़बड़ियां ठीक की गई हैं (I4f47e)
  • छोटे किए गए क्लाइंट के लिए, AbstractMethodError को रोकने के लिए, Jetpack XR Scenecore ProGuard के नियम को अपडेट किया गया है. (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().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 के सभी एपीआई के लिए, रनटाइम के दौरान API 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 मॉडल ज्यामिति को अपने एनवायरमेंट के एक्सआर सीन के बैकड्रॉप के तौर पर इस्तेमाल करके, पूरी तरह से इमर्सिव अनुभव पाएं. इसके अलावा, पासथ्रू मोड चालू करें, ताकि आपका वर्चुअल सीन, उपयोगकर्ता के आस-पास की असली दुनिया के साथ इंटिग्रेट हो सके.
  • 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”) जोड़ना चाहिए. आने वाले समय में, scenecore इस लाइब्रेरी को api डिपेंडेंसी के तौर पर शामिल करेगा. इसलिए, क्लाइंट को इसे साफ़ तौर पर बताने की ज़रूरत नहीं होगी.
  • SceneCore, com.google.guava:guava-31.1-android और com.google.protobuf:protobuf-javalite को ट्रांज़िटिव डिपेंडेंसी के तौर पर शामिल करता है. अगर इसकी वजह से आपके बिल्ड में डुप्लीकेट क्लास की गड़बड़ियां होती हैं, तो इन दो डिपेंडेंसी को सुरक्षित तरीके से हटाया जा सकता है.
  • अगर आपका ऐप्लिकेशन SceneCore का इस्तेमाल करता है और ProGuard को चालू करता है, तो सेशन बनाते समय वह क्रैश हो जाएगा. इस समस्या को हल करने के लिए, ProGuard को बंद करें. ProGuard को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.