Jetpack SceneCore

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

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

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

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

ग्रूवी

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

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

Kotlin

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

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

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

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

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

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

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

संस्करण 1.0

वर्शन 1.0.0-rc02

07 अक्टूबर, 2026

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

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

  • SessionExt में मौजूद perceptionRuntimeCache को हटाकर, मेमोरी लीक की समस्या को ठीक किया गया है. साथ ही, Session इंस्टेंस से सीधे तौर पर PerceptionRuntime को वापस पाने के लिए, इसे फिर से फ़ैक्टर किया गया है. (Ie35b1)
  • OpenXR नेटिव हैंडल के लिए applicationContext का इस्तेमाल करके, कॉन्टेक्स्ट लीक होने की समस्या को ठीक किया गया है. इससे यह पक्का किया जा सकेगा कि नेटिव रनटाइम, Activity कॉन्टेक्स्ट के रेफ़रंस को होल्ड न करे. (Ie35b1)
  • सही सिंक्रनाइज़ेशन और इनिशियलाइज़ेशन लॉकिंग की सुविधा जोड़कर, XrInstanceManager में रेस कंडीशन की समस्या ठीक की गई. (Ie35b1)
  • ReferenceCleaner को ठीक किया गया है, ताकि क्लीनिंग ऐक्शन के डी-रजिस्ट्रेशन को सपोर्ट किया जा सके. साथ ही, यह पक्का किया गया है कि Entity क्लीनअप ऐक्शन, dispose() के दौरान साफ़ तौर पर चलाए जाएं. इससे कचरा इकट्ठा होने पर, डुप्लीकेट एक्ज़ीक्यूशन को रोका जा सकेगा. (Ie35b1)
  • Scene में मेमोरी लीक की समस्या को ठीक किया गया है. इसके लिए, SessionExt से sceneCache को हटाया गया है. साथ ही, sessionConnectors से सीधे तौर पर इंस्टेंस फ़ेच करने के लिए, Scene को फिर से फ़ैक्टराइज़ किया गया है. (Ie35b1)

वर्शन 1.0.0-rc01

09 सितंबर, 2026

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

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

  • xr:scenecore:scenecore-openxr लाइब्रेरी में जोड़ा गया. (Ic49f2)
  • 1.0.0 स्टेबल रिलीज़ से पहले, कई ऐसे एपीआई हटा दिए गए हैं जो अब काम नहीं करते.

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

  • मेमोरी लीक से जुड़ी गड़बड़ी को ठीक किया गया है. इस गड़बड़ी में, ऐक्टिविटी के बंद होने पर भी सिस्टम, ऐक्टिविटी के रेफ़रंस को बनाए रखता था. (I6dcd7)

व्यवहार में बदलाव

  • SceneCore से logcat आउटपुट हटाया गया. (I10c3c)

वर्शन 1.0.0-beta02

12 अगस्त, 2026

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

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

  • अगर पैरंट इकाई को ट्रैश में डाल दिया गया है, तो � will return null.toMoveEvent() (Ia7a1b)

वर्शन 1.0.0-beta01

15 जुलाई, 2026

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

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

  • GltfAnimation और SpatialGltfModelAnimation एपीआई को एक्सपेरिमेंटल के तौर पर मार्क किया गया है. कुछ प्रॉपर्टी को गेटर में बदल दिया गया है. (I8d689, b/524771027)
  • सार्वजनिक MovableComponent.createTrackingMovable फ़ैक्ट्री मेथड को हटा दिया गया है. (I00912, b/477169015)
  • Session.create को suspend फ़ंक्शन में बदल दिया गया है. (I5d27f)
  • ActivitySpace और AnchorSpace, अब एक ही SpaceEntity क्लास का इस्तेमाल करते हैं. इसमें उन इकाइयों के लिए सामान्य व्यवहार शामिल होता है जिनकी पोज़िशन को सिस्टम कंट्रोल करता है (I506ec, b/513619219)
  • AnchorEntity को AnchorSpace (Ifa95e, b/513619219) के तौर पर अपडेट किया गया
  • यह सार्वजनिक टेस्ट एपीआई SoundEffectPoolComponentTester उपलब्ध कराता है. (I87df7, b/498104417)
  • SurfaceEntity.Shape.Quad कंस्ट्रक्टर में एक वैकल्पिक cornerRadius पैरामीटर जोड़ा गया है. साथ ही, cornerRadius प्रॉपर्टी को सार्वजनिक कर दिया गया है. डेवलपर अब Quad शेप बनाते समय, कॉर्नर रेडियस तय कर सकते हैं. इससे वे SurfaceEntity कैनवस को गोल कोनों के साथ रेंडर कर पाएंगे. साथ ही, मौजूदा Quad के रेडियस के बारे में क्वेरी कर पाएंगे. (Ia7809, b/474681085)
  • यह सार्वजनिक टेस्ट एपीआई SpatialAudioTrackBuilderTester, SpatialAudioTrackTester, और SceneCoreTestRule.getTester ओवरलोड उपलब्ध कराता है. (I378c6, b/496333938)
  • ARCore के कई टाइप के लिए, toString() की खास जानकारी को बदलें. इन टाइप का मकसद, डेवलपर को डीबग करने के लिए ज़्यादा जानकारी देना है. इनका इस्तेमाल प्रोडक्शन या शिप किए गए ऐप्लिकेशन में नहीं किया जाना चाहिए.

वर्शन 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 Trackable को गतिविधि की जगह के हिसाब से पोज़ में बदला जा सके. (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() कर दिया गया है. pose प्रॉपर्टी अब काम नहीं करती है. (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 एपीआई जोड़ा गया. 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)
  • SceneCore में glTF ऐनिमेशन को कंट्रोल करने के लिए, GltfAnimation एपीआई जोड़े गए हैं. (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 रनटाइम में 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() जोड़ा गया. लाइफ़साइकल को 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 से 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)
  • recommendedContentBoxInFullSpace प्रॉपर्टी को ActivitySpace में जोड़ा गया. यह फ़ुल स्पेस मोड में, कॉन्टेंट को रखने के लिए सुझाया गया बॉक्स दिखाता है. (I4cd6f)
  • मूवेबल मॉडिफ़ायर के लिए ओवरलोड किया गया कंस्ट्रक्टर उपलब्ध कराया गया है. इससे ऐंकर करने की अनुमति मिलती है. (Ic0c70)

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

इस रिलीज़ के लिए, SceneCore में एपीआई से जुड़े कई बदलाव किए गए हैं. कई क्लास के नाम बदल दिए गए हैं और/या उन्हें अलग-अलग मॉड्यूल में ले जाया गया है. साथ ही, ज़्यादातर गेटर/सेटर तरीकों को 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)
  • हमने Kotlin प्रॉपर्टी के साथ, इन SpatialEnvironment गेटर और सेटर को बदल दिया है: 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 कर दिया गया है. का नाम बदलकर disposeParentOnReAnchor systemMovable कर दिया गया है. create फ़ंक्शन से को हटा दिया गया है. अब 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 क्लास को सार्वजनिक ऑब्जेक्ट से बदल दिया गया है. इसमें कॉन्स्ट इंट वैल्यू हैं. setSpatialVisibilityChangedListener अब Consumer<SpatialVisibility> (Ie7e8c) के बजाय Consumer<Int> स्वीकार करता है
  • 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 टाइप को स्ट्रिंग से बदलकर 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 कर दिया गया है. एक्सआर पैकेज के लिए, रनटाइम के दौरान अब भी एपीआई 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 एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. 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 के InputEvent पर मौजूद 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 एपीआई के रेफ़रंस के साथ, Scene नाम की नई क्लास जोड़ी गई. सीन को सेशन की एक्सटेंशन प्रॉपर्टी के तौर पर ऐक्सेस किया जा सकेगा. 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 इंस्टेंस को अब प्लैटफ़ॉर्म पर रजिस्टर कर दिया गया है. इससे ऐप्लिकेशन को डीबग करने में मदद मिलेगी.

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

  • 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)
  • छोटे किए गए क्लाइंट के लिए 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() एक 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()` का इस्तेमाल करके स्काईबॉक्स को शून्य पर सेट करने से, दस्तावेज़ में बताए गए तरीके के मुताबिक स्काईबॉक्स पूरी तरह से काला नहीं होता. इससे सिस्टम का डिफ़ॉल्ट स्काईबॉक्स सेट हो सकता है या मौजूदा स्काईबॉक्स में कोई बदलाव नहीं होगा.
  • 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 को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.