{ } { }

Jetpack SceneCore

3D कॉन्टेंट की मदद से, Android XR सीन ग्राफ़ बनाएं और उसमें बदलाव करें.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
7 मई, 2025 - - - 1.0.0-alpha04

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

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

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

ग्रूवी

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha04"
    // Required for Java
    implementation "com.google.guava:listenablefuture:1.0"
    // Required for Kotlin
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0"

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

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha04")
    // Required for Java
    implementation("com.google.guava:listenablefuture:1.0")
    // Required for Kotlin
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0")

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

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

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

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

नई समस्या बनाना

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

वर्शन 1.0

वर्शन 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.
  • PanelEntity.setSize और PanelEntity.getSize अब माता-पिता के स्पेस में साइज़ दिखाते हैं.
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha, और Entity.getAlpha में अब एक नया पैरामीटर relativeTo है. इसकी मदद से, अलग-अलग स्पेस की वैल्यू को पाने/सेट करने की सुविधा मिलती है. इस एट्रिब्यूट के लिए, पैरंट, गतिविधि, और रीयल वर्ल्ड स्पेस जैसी वैल्यू इस्तेमाल की जा सकती हैं. साथ ही, इस पैरामीटर की डिफ़ॉल्ट वैल्यू 'पैरंट' है.
  • SessionExt.kt में स्पेस में दिखने की सुविधा के कॉलबैक एक्सटेंशन के तरीके जोड़े गए हैं. इनकी मदद से, यह पता लगाया जा सकता है कि सीन का कॉन्टेंट, उपयोगकर्ता के फ़ील्ड ऑफ़ व्यू में है या नहीं.
  • 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 में मौजूद सेशन क्लास को मिटा दिया गया है. इसकी जगह, XR रनटाइम में सेशन का इस्तेमाल किया जाएगा.
  • StereoSurfaceEntity का नाम बदलकर SurfaceEntity कर दिया गया है.
  • Entity.setSize और Entity.getSize को हटा दिया गया है और PanelEntity में वही तरीके जोड़े गए हैं.
  • PointSourceAttributes का नाम बदलकर PointSourceParams कर दिया गया है.
  • SpatializerConstants.SOURCE\_TYPE\_BYPASS का नाम बदलकर SpatializerConstants.SOURCE\_TYPE\_DEFAULT कर दिया गया है.
  • PointSourceParams इकाई के ऐक्सेस लेवल को सार्वजनिक से बदलकर संगठन के अंदर के लोगों के लिए किया गया है.
  • AnchorEntity.create को अब PlaneTrackingMode को Session.configure() में कॉन्फ़िगर करना होगा.
  • SpatialUser एपीआई के लिए, अब HeadTrackingMode को Session.configure() में कॉन्फ़िगर करना ज़रूरी है.
  • अगर ResizableComponent अटैच नहीं किया गया है, तो यह गड़बड़ी के लेवल के लॉग के बजाय, जानकारी के लेवल का लॉग देगा.
  • फ़ील्ड ऑफ़ व्यू (FOV) क्लास अब एक सामान्य Kotlin क्लास है.
  • हर तरह की इकाई को उसकी अपनी फ़ाइल में डालने के लिए, Entity.kt को अलग-अलग करें.
  • नया PanelEntity बनाते समय, ज़्यादातर व्यू को FrameLayout के तौर पर फिर से पैरंट के तौर पर सेट कर दिया जाएगा. इससे स्पेस पैनल के साथ 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 में ये कमिट शामिल हैं.

नई सुविधाएं

  • Proguard की मदद से कोड को छोटा करने की सुविधा, अब Jetpack XR कोड के लिए उपलब्ध है

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

  • Jetpack XR SceneCore (I4f47e) के लिए, Proguard की मदद से ऐप्लिकेशन को छोटा करने की सुविधा को बेहतर बनाने के लिए अन्य सुधार
  • छोटा किया गया क्लाइंट 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() की जगह getSpatialCapabilities().hasCapability() का इस्तेमाल किया जा रहा है, क्योंकि getSpatialCapabilities() एक SpatialCapabilities ऑब्जेक्ट दिखाता है. इससे, स्पेस की जानकारी देने वाली सुविधाओं की मौजूदगी की जांच करने के लिए, getSpatialCapabilities().hasCapability() का इस्तेमाल ज़्यादा बेहतर तरीके से किया जा सकता है.
    • 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 स्केल का हिसाब लगाया जा सके. इसके लिए, अनुवाद की वैल्यू को स्केल किए गए मीटर में दिखाया जाएगा, न कि बिना स्केल वाले मीटर में. जब सोर्स या डेस्टिनेशन में ActivitySpace शामिल होता है, तो transformPoseTo अब निर्देशांक में हुए बदलावों का हिसाब लगाने के लिए सही इकाइयों का भी इस्तेमाल करता है.
  • जब भी 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: अपने 3D सीन में 2D कॉन्टेंट जोड़ें. इसके लिए, स्टैंडर्ड Android लेआउट और गतिविधियों को स्पेसलाइज़ किए गए पैनल में जोड़ें. ये पैनल, रीयल-वर्ल्ड के प्लैटफ़ॉर्म पर फ़्लोट या ऐंकर किए जा सकते हैं.
  • GltfModelEntity: अपने सीन में 3D मॉडल डालें, उन्हें ऐनिमेट करें, और उनसे इंटरैक्ट करें. SceneCore, मौजूदा मॉडल के साथ आसानी से इंटिग्रेट करने के लिए, glTF फ़ाइल फ़ॉर्मैट के साथ काम करता है.
  • स्पेशल ऑडियो: अपने 3D सीन में ऐंबियंट और पॉइंट ऑडियो सोर्स जोड़ें, ताकि आपको पूरी तरह से इमर्सिव और स्पेसलाइज़ किया गया साउंड मिले.
  • StereoSurfaceEntity: SceneCore, Android डिवाइस की स्क्रीन पर रेंडर किए गए कॉन्टेंट को बाईं/दाईं आंख के हिसाब से रूट करने की सुविधा देता है. इसका इस्तेमाल, स्टीरियोस्कोपिक कॉन्टेंट को साइड-बाय-साइड या टॉप-बॉटम फ़ॉर्मैट में रेंडर करने के लिए किया जा सकता है. जैसे, स्टीरियो फ़ोटो, 3D वीडियो या डाइनैमिक तौर पर रेंडर किए गए अन्य यूज़र इंटरफ़ेस (यूआई). ऐप्लिकेशन को वीडियो डिकोड करने के लिए, MediaPlayer या ExoPlayer का इस्तेमाल करना चाहिए.
  • कॉम्पोनेंट सिस्टम: SceneCore, आपके XR कॉन्टेंट में सुविधाएं जोड़ने के लिए, एक बेहतर और सुविधाजनक कॉम्पोनेंट सिस्टम उपलब्ध कराता है. इसमें उपयोगकर्ताओं के लिए, मॉडल और पैनल को एक जगह से दूसरी जगह ले जाने, उनका साइज़ बदलने, और उनसे इंटरैक्ट करने की सुविधाएं भी शामिल हैं.
  • एंकर: पासथ्रू की सुविधा चालू होने पर, पैनल और मॉडल को असल प्लैटफ़ॉर्म से अटैच किया जा सकता है. इससे, उपयोगकर्ताओं को असल दुनिया के माहौल में वर्चुअल कॉन्टेंट को आसानी से इंटिग्रेट करने में मदद मिलती है.
  • उपयोगकर्ता की पोज़िशन: वर्चुअल सीन में उपयोगकर्ता की जगह की जानकारी ऐक्सेस करके, अपने कॉन्टेंट को उपयोगकर्ता की पोज़िशन के हिसाब से दिखाएं.
  • SpatialCapabilities: पूरी तरह से अडैप्टिव ऐप्लिकेशन बनाएं, जो उपलब्ध होने पर स्पेसलाइज़ की गई सुविधाओं का फ़ायदा ले सकें. जैसे, यूज़र इंटरफ़ेस (यूआई) कॉन्टेंट की 3D पोज़िशनिंग. इतना ही नहीं, ऐप्लिकेशन के चलने के दौरान, आपका ऐप्लिकेशन सुविधाओं में होने वाले बदलावों को मॉनिटर कर सकता है. इससे, उपयोगकर्ता अपने Android XR डिवाइस का इस्तेमाल कैसे कर रहा है, इसके आधार पर अनुभव में बदलाव किया जा सकता है.

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • फ़िलहाल, Jetpack SceneCore का इस्तेमाल करने के लिए, 30 का कम से कम SDK वर्शन ज़रूरी है. इस समस्या को हल करने के लिए, यहां दी गई मेनिफ़ेस्ट एंट्री <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> जोड़ें. इससे, ऐप्लिकेशन को 23 के मिनिमम SDK के साथ बनाया और चलाया जा सकेगा.
  • सेशन अमान्य हो सकता है. ऐसा कई स्थितियों में होता है, जब गतिविधि अपने-आप फिर से शुरू हो जाती है. जैसे, मुख्य पैनल का साइज़ बदलना, बाहरी डिवाइसों को कनेक्ट करना, और लाइट और डार्क मोड के बीच स्विच करना. अगर आपको सेशन अमान्य होने से जुड़ी समस्याएं आ रही हैं, तो इन समस्याओं को हल करने के लिए, अपने मुख्य पैनल का साइज़ न बदलें. इसके अलावा, डाइनैमिक पैनल इकाई का इस्तेमाल करें, कॉन्फ़िगरेशन में किए गए खास बदलावों के लिए गतिविधि को फिर से शुरू करने की सुविधा बंद करें या लाइट/डार्क मोड की थीम में किए गए बदलावों को बंद करें.
  • 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 को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.