Jetpack SceneCore

3D কন্টেন্ট সহ Android XR সিন গ্রাফ তৈরি ও ম্যানিপুলেট করুন।
লেটেস্ট আপডেট স্টেবল রিলিজ রিলিজ ক্যান্ডিডেট বিটা রিলিজ আলফা রিলিজ
০৭ অক্টোবর, ২০২৬ - 1.0.0-rc02 - -

ডিপেন্ডেন্সি ঘোষণা করা

XR SceneCore-এ কোনও ডিপেন্ডেন্সি যোগ করতে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে প্রয়োজনীয় আর্টিফ্যাক্টের জন্য ডিপেন্ডেন্সি যোগ করুন:

গ্রোভি

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

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

কোটলিন

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

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

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যোগ করুন দেখুন।

মতামত

আপনার মতামত Jetpack-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি যদি নতুন কোনও সমস্যা খুঁজে পান বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকে, তাহলে আমাদের জানান। নতুন লাইব্রেরি তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।

নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

ভার্সন ১.০

ভার্সন 1.0.0-rc02

০৭ অক্টোবর, ২০২৬

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

৯ সেপ্টেম্বর, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-rc01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • xr:scenecore:scenecore-openxr লাইব্রেরিতে যোগ করা হয়েছে। (Ic49f2)
  • 1.0.0 স্থিতিশীল রিলিজের আগে বেশ কয়েকটি বন্ধ হয়ে যাওয়া API সরিয়ে দেওয়া হয়েছে।

সমস্যার সমাধান

  • মেমরি লিক সংক্রান্ত বাগ সমাধান করা হয়েছে যেখানে অ্যাক্টিভিটি ধ্বংস হয়ে যাওয়ার পরেও সিস্টেম অ্যাক্টিভিটি রেফারেন্স ধরে রাখতে পারত। (I6dcd7)

আচরণে পরিবর্তন

  • SceneCore থেকে logcat আউটপুট সরিয়ে দেওয়া হয়েছে। (I10c3c)

ভার্সন 1.0.0-beta02

১২ আগস্ট, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta02-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • প্যারেন্ট এন্টিটি গার্বেজ কালেকশন করা হলে toMoveEvent(), null রিটার্ন করবে। (Ia7a1b)

ভার্সন 1.0.0-beta01

১৫ জুলাই, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • GltfAnimation ও SpatialGltfModelAnimation API পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়েছে। কিছু প্রপার্টিকে গেটারে পরিবর্তন করা হয়েছে। (I8d689, b/524771027)
  • পাবলিক MovableComponent.createTrackingMovable ফ্যাক্টরি মেথড সরিয়ে দেওয়া হয়েছে। (I00912, b/477169015)
  • Session.create-কে সাসপেন্ড ফাংশনে কনভার্ট করা হয়েছে। (I5d27f)
  • ActivitySpace এবং AnchorSpace এখন একটি সাধারণ SpaceEntity ক্লাসকে এক্সটেন্ড করে, যার মধ্যে এমন এন্টিটির সাধারণ আচরণ থাকে যাদের পজিশন সিস্টেমের মাধ্যমে কন্ট্রোল করা হয় (I506ec, b/513619219)
  • AnchorEntity আপডেট করে AnchorSpace করা হয়েছে (Ifa95e, b/513619219)
  • পাবলিক টেস্ট API SoundEffectPoolComponentTester প্রদান করে। (I87df7, b/498104417)
  • SurfaceEntity.Shape.Quad কনস্ট্রাক্টরে একটি বিকল্প cornerRadius প্যারামিটার যোগ করা হয়েছে এবং cornerRadius প্রপার্টি সর্বজনীন করা হয়েছে। রাউন্ডেড কোণ সহ SurfaceEntity ক্যানভাস রেন্ডার করার জন্য ডেভেলপাররা এখন কোয়াড শেপ তৈরি করার সময় একটি কোণীয় ব্যাসার্ধ নির্দিষ্ট করতে এবং আগে থেকে থাকা কোয়াডের ব্যাসার্ধ কোয়েরি করতে পারবেন। (Ia7809, b/474681085)
  • পাবলিক টেস্ট API SpatialAudioTrackBuilderTester, SpatialAudioTrackTester এবং SceneCoreTestRule.getTester ওভারলোড প্রদান করে। (I378c6, b/496333938)
  • একাধিক ARCore ধরনের জন্য toString()-এর বিশেষ ওভাররাইড যোগ করুন। এইসব ধরনের তথ্য ডেভেলপারদের ডিবাগ করার উদ্দেশ্যে অতিরিক্ত তথ্য প্রদান করার জন্য তৈরি করা হয়েছে এবং প্রোডাকশন বা শিপ করা অ্যাপ্লিকেশনে ব্যবহার করার জন্য তৈরি করা হয়নি।

ভার্সন 1.0.0-alpha16

১৭ জুন, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 রিলিজ করা হয়েছে। 1.0.0-alpha16 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • CustomMesh.BuilderFromMeshData ও CustomMesh.BuilderFromMeshBuffer-এ addVertexData, setIndexData ও addSubset-এর জন্য ওভারলোড যোগ করা হয়েছে। এইসব ওভারলোড, ডেভেলপারদের ByteBufferRegion বা MeshSubset-এর মতো মধ্যবর্তী অবজেক্টে র‍্যাপ না করেই সরাসরি (যেমন, ByteBuffer, offset, size, topology, indexOffset, indexCount) র ডেটা ও প্যারামিটার পাস করতে দেয়। (I84d5c)
  • Scene.requestFullSpaceMode() ও Scene.requestHomeSpaceMode()-এর নাম পরিবর্তন করে যথাক্রমে requestFullSpace() ও requestHomeSpace() করা হয়েছে। "হোম স্পেস মোড" ও "ফুল স্পেস মোড" উল্লেখ করে এমন অন্যান্য পদ্ধতি ও ডকুমেন্টও একইভাবে আপডেট করা হয়েছে। (I45751)
  • পাবলিক টেস্ট API PanelEntityTester ও MainPanelEntityTester (I961e4) প্রদান করে
  • SoundEffectPoolComponent-এ (I4a750) pointSourceParams প্রপার্টি যোগ করা হচ্ছে
  • পাবলিক টেস্ট API MovableComponentTester (I0c972) প্রদান করে
  • পাবলিক টেস্ট API প্রদান করে PointerCaptureComponentTester (Ic0d4f)
  • পাবলিক টেস্ট API ActivityPanelEntityTester (I837c4) প্রদান করে
  • পাবলিক টেস্ট API ResizableComponentTester (I0a3a4) প্রদান করে
  • পাবলিক টেস্ট API BoundsComponentTester. (Iefd53) প্রদান করে
  • পাবলিক টেস্ট API প্রদান করে SpatialMediaPlayerTester (Ia3e09)
  • পাবলিক টেস্ট API SpatialEnvironmentTester (Icf60f) প্রদান করে
  • পাবলিক টেস্ট API GltfModelTester ও SceneCoreTestRule.getGltfModelTester প্রদান করে। (I33fcb)
  • পাবলিক টেস্ট API InteractableComponentTester প্রদান করে। (Ia7096)
  • পাবলিক টেস্ট API SurfaceEntityTester প্রদান করে। (Ic0740)
  • পাবলিক টেস্ট API GltfModelEntityTester, TestGltfModelNode ও TestGltfAnimation প্রদান করে। (I72c4d)
  • পাবলিক টেস্ট API SceneTester ও SceneCoreTestRule.sceneTester প্রদান করে। (Ib4ec5)
  • পাবলিক টেস্ট API PerceptionSpaceTester ও SceneCoreTestRule.perceptionSpaceTester প্রদান করে। (Icf739)
  • পাবলিক টেস্ট API MeshEntityTester প্রদান করে। (I63801)
  • পাবলিক টেস্ট API ImageBasedLightingAssetTester এবং SceneCoreTestRule.getTester ওভারলোড প্রদান করে। (I57ec4)
  • পাবলিক টেস্ট API TextureTester (Ia865b) প্রদান করে
  • পাবলিক টেস্ট API PositionalAudioComponentTester (Icd96e) প্রদান করে
  • পাবলিক টেস্ট API SpatialSoundPoolTester (Ia3531) প্রদান করে
  • পাবলিক টেস্ট API SoundEffectPoolTester (If349a) প্রদান করে
  • পাবলিক টেস্ট API ActivitySpaceTester ও SceneCoreTestRule.activitySpaceTester প্রদান করে। (I2d5c2)
  • পাবলিক টেস্ট API SpatialWindowTester (I41837) প্রদান করে
  • পাবলিক টেস্ট API AnchorEntityTester (I68404) প্রদান করে
  • পাবলিক টেস্ট API ইন্টারফেস SceneCoreTestRule প্রদান করে। (Ic72d3)
  • PixelDensity ক্লাস যোগ করা হয়েছে এবং Scene#virtualPixelDensity-এর মাধ্যমে তা এক্সপোজ করা হয়েছে, যাতে ActivitySpace-এ সঠিক ফিজিক্যাল ডাইমেনশন ম্যাপিংয়ের জন্য হার্ডওয়্যার-ভিত্তিক পিক্সেল-পার-মিটার রেশিও প্রদান করা যায়। (I0e3ac)
  • কাস্টম মেশ তৈরি ও রেন্ডার করার জন্য পাবলিক API যোগ করা হয়েছে। (I7ad2f)
  • VertexLayout API-কে VertexBufferLayout-এর তালিকা ব্যবহার করার জন্য আপডেট করা হয়েছে, যেখানে প্রতিটি VertexBufferLayout একটি ভার্টেক্স বাফার মধ্যে অ্যাট্রিবিউট বর্ণনা করে। এর ফলে, কাস্টম স্ট্রাইড ও অফসেট সহ ইন্টারলিভড অ্যাট্রিবিউট সহ আরও নমনীয় ভার্টেক্স ডেটা অ্যারেঞ্জমেন্টের সুবিধা পাওয়া যায়। (Ic426b)
  • অ্যাক্টিভিটি স্পেসের সাথে সম্পর্কিত পোজে ARCore ট্র্যাক করা যায় এমন কোনও অবজেক্টকে ট্রান্সফর্ম করার জন্য MovableComponent.createTrackingMovable প্রদান করে। (I12249)
  • Entity.create-এ প্যারেন্টের ডিফল্ট ভ্যালু আপডেট করে 'নাল' করা হয়েছে। (Ic3145)
  • Entity ইন্টারফেসের পরিবর্তে ক্লাস হিসেবে আপডেট করা হয়েছে এবং এখন এটি সব ধরনের এন্টিটির মূল ক্লাস। এই পরিবর্তনের অংশ হিসেবে BaseEntity সরিয়ে দেওয়া হয়েছে। (I7fbc9)
  • GltfModel, ExrImage ও ImageBasedLightingAsset এখন AutoCloseable প্রয়োগ করে যাতে Kotlin-এর use ব্লক ব্যবহার করে বাগধারামূলক রিসোর্স ম্যানেজমেন্ট করা যায়। (I1ac79)
  • স্পেসিয়াল এনভায়রনমেন্ট লাইটিংকে সংজ্ঞায়িত করার জন্য ExrImage-এর পরিবর্তে ImageBasedLightingAsset ক্লাস চালু করা হয়েছে। ExrImage বন্ধ করা হয়েছে এবং পাবলিক API থেকে সরিয়ে দেওয়া হয়েছে। SpatialEnvironmentPreference-কে ImageBasedLightingAsset ব্যবহার করার জন্য আপডেট করা হয়েছে। (I6c92a)
  • SpatialEnvironment-এ skybox প্যারামিটারটির নাম পরিবর্তন করে imageBasedLightingAsset করা হয়েছে যাতে এর উদ্দেশ্য আরও ভালোভাবে বোঝা যায় এবং এটিও স্পষ্ট করা হয়েছে যে জ্যামিতি প্যারামিটারে ভিজ্যুয়াল স্কাইবক্স টেক্সচার অন্তর্ভুক্ত করতে হবে। (I24d4a)
  • স্পেশিয়াল এন্টিটি এখন স্পেশিয়াল API লেভেল ১ ও ২-এ পিক্সেল-টু-মিটার ক্যালকুলেশনের জন্য একটি স্থিতিশীল ডিভাইস ডেনসিটি ব্যবহার করে, এর ফলে সিস্টেম ডিসপ্লে ডেনসিটিতে পরিবর্তন হলেও সাইজ একই থাকে। (I37051)

ভার্সন 1.0.0-alpha15

১৯ মে, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 রিলিজ করা হয়েছে। 1.0.0-alpha15 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • Entity.dispose() এখন পাবলিক API হিসেবে সরিয়ে দেওয়া হয়েছে। 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 API রিফ্যাক্টর করা হয়েছে। Component এখন একটি অ্যাবস্ট্রাক্ট ক্লাস। সরাসরি কল প্রতিরোধ করতে onAttach() ও onDetach() পদ্ধতি এখন protected। কম্পোনেন্ট লাইফসাইকেল ম্যানেজ করতে Entity.addComponent() ও Entity.removeComponent() ব্যবহার করুন। (Id04e8)
  • SceneCore-এর PlaneSemanticType PlaneOrientation কনস্ট্যান্ট Ints থেকে কাস্টম টাইপে মাইগ্রেট করা হয়েছে। তাদের ANY কনস্ট্যান্ট সরিয়ে দেওয়া হবে, পরিবর্তে ক্লায়েন্টদের স্পষ্টভাবে সবকটি কাঙ্ক্ষিত কনস্ট্যান্টের তালিকা তৈরি করতে হবে অথবা নতুন .ALL অপরিবর্তনীয় সেট কনস্ট্যান্ট ব্যবহার করতে হবে। AnchorEntity ফ্যাক্টরি মেথড এখন একটি ভ্যালুর পরিবর্তে এই ধরনের একটি সেট গ্রহণ করে। (Ib1033)
  • পরীক্ষামূলক কাস্টম মেশ API-তে স্কেলেটাল অ্যানিমেশন (স্কিনিং) সংক্রান্ত সহায়তা যোগ করা হয়েছে। ডেভেলপাররা এখন MeshEntity তৈরি করার সময় boneCount নির্দিষ্ট করে কাস্টম মেশ অ্যানিমেট করতে এবং MeshEntity.setBoneTransforms() ব্যবহার করে রিয়েল-টাইমে অ্যানিমেশন আপডেট করতে পারবেন। (Id8ba2, b/496692490)
  • পরীক্ষামূলক CustomMesh API চালু করা হয়েছে। ডেভেলপাররা এখন 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 ব্যবহার করা হয়েছে এবং এখন ARCore Anchor (I5c7c8) থেকে AnchorEntity তৈরি করা হলে 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

৬ মে, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 রিলিজ করা হয়েছে। 1.0.0-alpha14 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • 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 এনুম ভ্যালুর নাম পরিবর্তন করা হয়েছে। (Ifbc83, b/482670596)
  • কাস্টম Component প্রয়োগ করার অনুমতি দিতে Component.onAttach ও onDetach-কে পাবলিক API হিসেবে এক্সপোজ করুন। (I0ca1f)
  • স্পেশিয়াল অডিও কম্পোনেন্ট যোগ করা হচ্ছে (I39ddd, b/489421980, b/436642086, b/436642499)
  • PointSourceParams থেকে Entity সরান। পরিবর্তে, এন্টিটি সরাসরি SpatialAudioTrack, SpatialSoundPool এবং SpatialMediaPlayer-এর সাথে ব্যবহার করা হবে (Ib3685, b/489421980, b/436634048)
  • DeviceTrackingMode.LAST_KNOWN-এর নাম পরিবর্তন করে SPATIAL_LAST_KNOWN করা হয়েছে (পুরনো ফলব্যাক সহ), 3DoF ট্র্যাকিংয়ের জন্য INERTIAL_LAST_KNOWN যোগ করা হয়েছে এবং TrackingState-এ TRACKING_DEGRADED যোগ করা হয়েছে। (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

২৫ মার্চ, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha13-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Session.create থেকে unscaledGravityAlignedActivitySpace ফ্ল্যাগ সরিয়ে দেওয়া হয়েছে। ActivitySpace এখন সবসময় আনস্কেল করা এবং গ্র্যাভিটি-অ্যালাইন করা থাকে। (If6f11, b/458173423)
  • GltfModelEntity থেকে বাতিল করা setMaterialOverride ও clearMaterialOverride ফাংশন সরিয়ে দেওয়া হয়েছে, এখন সেগুলি আলাদা আলাদা GltfModelNode-এ কল করা হয়। (I2e5d2)
  • PanelEntity-এ transformPixelCoordinatesToLocalPosition ও transformNormalizedCoordinatesToLocalPosition যোগ করা হয়েছে এবং Vector3 পজিশনের পরিবর্তে পোজ রিটার্ন করত এমন সমতুল্য পরীক্ষামূলক পদ্ধতি সরিয়ে দেওয়া হয়েছে। (Ib6960, b/460123106, b/458333591)
  • SceneCore-এ glTF অ্যানিমেশন কন্ট্রোল করার জন্য GltfAnimation API যোগ করা হয়েছে। (I2c172, b/466065486, b/465819070, b/465818617)
  • ScenePose.activitySpacePose-এর নাম পরিবর্তন করে ScenePose.poseInActivitySpace করা হয়েছে (I8f175, b/427822261)
  • Scenecore প্রজেক্টেড রানটাইম ইমপ্লিমেন্টেশন যোগ করা হয়েছে (I9c4ab, b/476440158)
  • প্রধান প্যানেল এন্টিটির সাইজ পরিবর্তন করার সময়, এটি ActivitySpace অরিজিনে নিজেকে আবার পজিশন করতে পারে। প্যানেলটিকে ম্যানুয়ালি বা প্রোগ্রাম্যাটিক উপায়ে তার আসল লোকেশনে ফিরিয়ে আনা ছাড়া আর কোনও বিকল্প নেই। ভবিষ্যতের কোনও রিলিজে এই বাগ ঠিক করা হবে। (b/489427007).
  • কিছু ক্ষেত্রে, SurfaceEntity ও অন্যান্য নন-প্যানেল এন্টিটি ধরনের জন্য MovableComponent-এর অ্যাফোর্ডেন্স দেখা নাও যেতে পারে। MovableComponent.size স্পষ্টভাবে সেট করলে, অ্যাফোর্ডেন্স দেখা যাবে। ভবিষ্যতে রিলিজের সময় এই বাগ ঠিক করা হবে (b/490983469)।

ভার্সন 1.0.0-alpha12

২৫ ফেব্রুয়ারি, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 রিলিজ করা হয়েছে। 1.0.0-alpha12 ভার্সনে এইসব কমিট রয়েছে।

পরিচিত সমস্যা

  • অ্যাঙ্কর করা এন্টিটি কয়েক সেকেন্ড পরে অ্যাঙ্কর করা পজিশন থেকে অ্যাক্টিভিটি স্পেসের অরিজিনে স্ন্যাপ করতে পারে।
  • SurfaceEntityটি ইনস্ট্যান্স তৈরি করার সময় অ্যাপ ক্র্যাশ করতে পারে। androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 এবং পরবর্তী রিলিজগুলিতে এই সমস্যার সমাধান করা হয়েছে। প্রভাবিত অ্যাপগুলিকে লেটেস্ট ভার্সনে আপডেট করতে হবে।

API-তে পরিবর্তন

  • ActivitySpace.addOnSpaceUpdatedListener ও ActivitySpace.removeOnSpaceUpdatedListener-এর নাম পরিবর্তন করে addOnOriginChangedListener ও removeOnOriginChangedListener করা হয়েছে। AnchorEntity.setOnSpaceUpdatedListener-এর নাম পরিবর্তন করে setOnOriginChangedListener করা হয়েছে। (I5d8fb)
  • FakeEntity-এ সর্বজনীন নাম প্রপার্টি যোগ করা হয়েছে এবং FakePanelEntity-এ সর্বজনীনভাবে দেখার সুবিধা দেওয়া হয়েছে। (Ifa1f9)

সমস্যার সমাধান

  • নতুন সিস্টেম ইমেজে (I57d04) পিক্সেল ডেনসিটি সংক্রান্ত গণনা ঠিক করা হয়েছে

ভার্সন 1.0.0-alpha11

২৮ জানুয়ারি, ২০২৬

androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha11-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • PerceivedResolutionResult.InvalidCameraView-এর নাম পরিবর্তন করে PerceivedResolutionResult.InvalidRenderViewpoint করা হয়েছে, কারণ getPerceivedResolution API এখন CameraViewScenePose-এর পরিবর্তে ARCore-এর RenderViewpoint API-এর উপর নির্ভর করে। এই নামটি নতুন প্রয়োগকে আরও ভালোভাবে তুলে ধরে। (I8c967, b/446989745, b/419311998)
  • PanelEntity/SurfaceEntity.getPerceivedResolution পদ্ধতিতে এখন ডেভেলপারদের দেওয়া RenderViewpoint আর্গুমেন্ট হিসেবে নেওয়া হয়। আগে, রানটাইম, অনুভূত রেজোলিউশন গণনায় ব্যবহৃত RenderViewpoint-কে নির্বিচারে বেছে নিত। (I8c967, b/446989745, b/419311998)
  • SpatialUser, ScenePose.Head ও ScenePose.CameraView সরিয়ে দেওয়া হয়েছে। এইসব API-এর কার্যকারিতা ARCore for Jetpack XR-এর মধ্যে থাকা ArDevice এবং RenderViewpoint API-এর মাধ্যমে কভার করা হয়। ব্যবহারকারীর মাথা বা বাঁ বা ডান চোখের ScenePose পেতে, ডেভেলপাররা ARCore API ব্যবহার করে প্রাপ্ত উপযুক্ত পোজের সাথে PerceptionSpace.getScenePoseFromPerceptionPose ব্যবহার করতে পারেন। (I2f69c, b/446989745)

ভার্সন 1.0.0-alpha10

৩ ডিসেম্বর, ২০২৫

androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 রিলিজ করা হয়েছে। 1.0.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • PanelEntity-এ transformPixelCoordinatesToPose ও transformNormalizedCoordinatesToPose যোগ করা হয়েছে (I462b3)
  • SceneCore-এর লজিকের উপর ভিত্তি করে SceneCore রানটাইমে একটি হেল্পার ক্লাস, Utils যোগ করা হয়েছে (I570b9)

সমস্যার সমাধান

  • সেশন বন্ধ হয়ে গেলে এবং SpatialModeChangeEvent পেলে (If44e8) হতে পারে এমন সম্ভাব্য ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে
  • অ্যাক্টিভিটি থেকে বেরিয়ে আসার বা আবার প্রবেশ করার সময় IllegalStateException হতে পারে এমন একটি সমস্যার সমাধান করা হয়েছে। (Ibff1c)

ভার্সন 1.0.0-alpha09

১৯ নভেম্বর, ২০২৫

androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha09-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • পারসেপশন স্পেস অরিজিন পোজের কম্পোজিশন এবং পারসেপশন স্পেস অরিজিনের সাপেক্ষে পোজকে রিপ্রেজেন্ট করে এমন একটি ScenePose পাওয়ার জন্য API যোগ করে। (I5b50a)
  • getGravityAlignedPose ফাংশন যোগ করা হয়েছে। গ্র্যাভিটি অ্যালাইন করা পোজ, ঘূর্ণনের পিচ ও রোলকে উপেক্ষা করে। (I5ae21)
  • AnchorEntity.State কনস্ট্যান্টের ধরন Int থেকে State সাবটাইপে পরিবর্তন করা হয়েছে। (Ib0c49)
  • Entity ইন্টারফেসে getChildren() যোগ করা হয়েছে। MainPanelEntity লাইফসাইকেল আপডেট করা হয়েছে। (Ia69d6)

API-তে পরিবর্তন

  • PointerCaptureComponent.PointerCaptureState কনস্ট্যান্টের ধরন Ints থেকে পরিবর্তন করে PointerCaptureState সাবটাইপ করা হয়েছে। (Ic888a)
  • Scene.spatialCapabilities এখন Int ফিল্ডের পরিবর্তে Set<SpatialCapability> ধরনের। SpatialCapability কনস্ট্যান্টের নাম পরিবর্তন করা হয়েছে। (I9c109)
  • SurfaceEntity কনস্ট্যান্টের নাম পরিবর্তন করা হয়েছে এবং Int থেকে SurfaceEntity সাবটাইপে পরিবর্তন করা হয়েছে। (I419ed)
  • SpatializerConstant কনস্ট্যান্টের নাম পরিবর্তন করা হয়েছে এবং Int থেকে SpatializerConstant সাবটাইপে পরিবর্তন করা হয়েছে। (Ia0e18)
  • TextureSampler কনস্ট্যান্টের নাম পরিবর্তন করা হয়েছে এবং Int থেকে TextureSampler সাবটাইপে পরিবর্তন করা হয়েছে। (I44078)
  • SpatialVisibility কনস্ট্যান্টের ধরন Ints থেকে SpatialVisibility সাবটাইপে পরিবর্তন করা হয়েছে। (I70739)
  • ResizeEvent.ResizeState কনস্ট্যান্টের ধরনগুলির নাম পরিবর্তন করা হয়েছে এবং Int থেকে ResizeState সাবটাইপে পরিবর্তন করা হয়েছে। (I384d5)
  • InputEvent কনস্ট্যান্টের ধরনগুলির নাম পরিবর্তন করা হয়েছে এবং সেগুলিকে Int থেকে পরিবর্তন করে তাদের সংশ্লিষ্ট এনক্লোজিং ধরন থেকে ইনহেরিট করা হয়েছে। (I82817)
  • GltfModelEntity.AnimationState কনস্ট্যান্টের ধরন Ints থেকে পরিবর্তন করে AnimationState সাবটাইপ করা হয়েছে। (I24f4e)
  • AlphaMode কনস্ট্যান্টের নাম পরিবর্তন করা হয়েছে এবং Int থেকে AlphaMode সাবটাইপে পরিবর্তন করা হয়েছে। (I27b56)
  • Space ধ্রুবক ধরনগুলি Ints থেকে Space সাবটাইপে পরিবর্তন করা হয়েছে। (I9255b)
  • ScenePose.hitTest ও সম্পর্কিত পদ্ধতি এখন কোনও ইন্টারসেকশন খুঁজে না পেলে, নাল hitPosition সহ HitTestResult-এর পরিবর্তে null রিটার্ন করে। HitTestResult.hitPosition আর নাল হতে পারবে না। (I1400a)
  • ActivityPose-এর রেফারেন্স পরিবর্তন করে ScenePose করা হয়েছে। (I7fe43)

ভার্সন 1.0.0-alpha08

২২ অক্টোবর, ২০২৫

androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 রিলিজ করা হয়েছে। 1.0.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ActivityPanelEntity.moveActivity-এর নাম পরিবর্তন করে transferActivity রাখা হয়েছে (I273c5, b/430332856)

সমস্যার সমাধান

  • :xr:scenecore:scenecore-এর (I6ab65, b/447000520) ইমপ্লিমেন্টেশন ডিপেন্ডেন্সি হিসেবে :xr:scenecore:scenecore-spatial-rendering ও :xr:scenecore:scenecore-spatial-core যোগ করা হয়েছে
  • সেশন ধ্বংস করার পরে session.scene অ্যাক্সেস করা হলে ব্যতিক্রম ঘটে। (I77e6f)

ভার্সন 1.0.0-alpha07

২৪ সেপ্টেম্বর, ২০২৫

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-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • 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-এর মতো সরানো যায় না এমন এন্টিটিতে সেট করলে, বুলিয়ান false রিটার্ন করার পরিবর্তে 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

১৩ আগস্ট, ২০২৫

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-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • SceneCore-এর BaseEntity ও BaseScenePose API-এর উপর থেকে বিধিনিষেধ তুলে নিন (88c0ff6)

ভার্সন 1.0.0-alpha05

৩০ জুলাই, ২০২৫

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-তে পারসিভড রেজোলিউশন API যোগ করা হয়েছে। (I118f6)
  • PerceivedResolution HSM-এ অ্যাক্টিভিটির মূল প্যানেলের অনুভূত রেজোলিউশন মনিটর করার জন্য Scene.kt-তে কলব্যাক পদ্ধতি যোগ করা হয়েছে। (I58084)
  • SurfaceEntity - তৈরি করার সময় সুপার স্যাম্পেলিংয়ের অনুরোধ করার জন্য অ্যাপ্লিকেশন সংক্রান্ত সহায়তা যোগ করা হয়েছে। এটি অ্যান্টি-এলাইজিংয়ের জন্য সুপার স্যাম্পেলিং ফিল্টার ব্যবহার করার অনুমতি দেয়। (I06913)
  • ActivitySpace-এ recommendedContentBoxInFullSpace প্রপার্টি যোগ করা হয়েছে। ফুল স্পেস মোডে থাকলে, কন্টেন্ট প্লেস করার জন্য এটি একটি সাজেস্ট করা বক্স রিটার্ন করে। (I4cd6f)
  • মুভেবল মডিফায়ারের জন্য ওভারলোড করা কনস্ট্রাক্টর প্রদান করা হয়েছে যা অ্যাঙ্করিংয়ের অনুমতি দেয়। (Ic0c70)

API-তে পরিবর্তন

এই রিলিজের জন্য SceneCore-এ API-তে অনেক পরিবর্তন করা হয়েছে। বিভিন্ন ক্লাসকে নতুন নাম দেওয়া হয়েছে এবং/অথবা আলাদা আলাদা মডিউলে সরানো হয়েছে এবং বেশিরভাগ গেটার/সেটার মেথডকে Kotlin প্রপার্টি দিয়ে প্রতিস্থাপন করা হয়েছে। আমাদের প্রথম বিটা রিলিজ পর্যন্ত API-তে কিছু পরিবর্তন হতে পারে, তবে সেগুলি খুব বেশি বা বিঘ্ন সৃষ্টিকারী হবে না।

  • নিম্নলিখিত ক্লাস ও ইন্টারফেসের নাম পরিবর্তন করা হয়েছে এবং/অথবা সেগুলি সরানো হয়েছে: 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-এর জন্য গেটার ও সেটারকে প্রপার্টি দিয়ে পরিবর্তন করা হয়েছে। Float3dSize থেকে Float2dSize-এ PanelEntity.size প্রপার্টি পরিবর্তন করা হয়েছে। বন্ধ হয়ে যাওয়া 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-এ এখন ওভাররাইড আছে যা ঐচ্ছিক Executor গ্রহণ করে। (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)
  • create পদ্ধতিতে windowBoundsPx প্যারামিটারকে pixelDimensions এবং এর ধরন Rect থেকে IntSize2d হিসেবে আপডেট করা হয়েছে। (I1926e)
  • SpatialEnvironment কনস্ট্রাক্টর এখন ইন্টার্নাল (I75a51)
  • কম্প্যানিয়ন অবজেক্ট SpatialPointerIcon.NONE ও SpatialPointerIcon.CIRCLE (I416d2) দিয়ে ক্লাস SpatialPointerIconNone ও SpatialPointerIconCircle ক্লাস পরিবর্তন করা হয়েছে
  • SpatialPointerComponent-এর SpatialPointerIcon আর নাল হতে পারবে না। সিস্টেম ডিফল্ট পয়েন্টার আইকন ব্যবহার করা উচিত তা বোঝাতে null-এর পরিবর্তে 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 যোগ করলে false রিটার্ন করে, MoveListener-এর নাম পরিবর্তন করে EntityMoveListener shouldDisposeParentAnchor করা হয়েছে, 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 class-এর পরিবর্তে const Int ভ্যালু সহ পাবলিক অবজেক্ট ব্যবহার করা হয়েছে। setSpatialVisibilityChangedListener এখন Consumer<SpatialVisibility>-এর (Ie7e8c) পরিবর্তে Consumer<Int> গ্রহণ করে
  • PointerCaptureComponent কনস্ট্যান্টের নাম পরিবর্তন করে PointerCaptureComponent.PointerCaptureState অবজেক্টে (I9c7ac) সরানো হয়েছে
  • PointerCaptureComponents' StateListener-এর জায়গায় Consumer<Int> ব্যবহার করা হয়েছে। (I9c7ac)
  • InputEventListener-এর পরিবর্তে Consumer<InputEvent> ব্যবহার করা হয়েছে (I9c7ac)
  • setPreferredAspectRatio Scene ক্লাস থেকে SpatialWindow অবজেক্টে সরানো হয়েছে এবং সেশনকে প্রথম প্যারামিটার হিসেবে নেয়। (I7b717)
  • Entity.setHidden()-এর পরিবর্তে Entity.setEnabled() এবং Entity.isHidden()-এর পরিবর্তে Entity.isEnabled() ব্যবহার করা হয়েছে। setHidden(false), setEnabled(true) ও isHidden() == !isEnabled()-এর সমান। (Icf0de)
  • Entity.contentDescription-এর ধরন String থেকে পরিবর্তন করে CharSequence করা হয়েছে। (Ie59be)
  • Session.create ও Session.configure এখন পর্যাপ্ত অনুমতি না দেওয়া হলে SessionCreatePermissionsNotGranted বা SessionConfigurePermissionsNotGranted রিটার্ন করার পরিবর্তে SecurityException থ্রো করে। (I7c488)
  • ResizableComponent.create এখন Consumer<ResizeEvent> ResizeEventListener প্রয়োজন Consumer<ResizeEvent> ResizableComponent.size দিয়ে পরিবর্তন করা হয়েছে ResizableComponent.affordanceSize ResizableComponent.minimumSize নাম পরিবর্তন করে ResizableComponent.minimumEntitySize ResizableComponent.maximumSize করা হয়েছে ResizableComponent.maximumEntitySize নাম পরিবর্তন করে ResizableComponent.autoHideContent করা হয়েছে ResizableComponent.shouldAutoHideContent ResizableComponent.forceShowResizeOverlay নাম পরিবর্তন করে ResizableComponent.shouldAlwaysShowOverlay করা হয়েছে (I97a2d)
  • androidx.xr.scenecore ও androidx.xr.compose-এর জন্য minSDK কমিয়ে ২৪ করা হয়েছে। XR প্যাকেজের জন্য এখনও রানটাইমে API 34 প্রয়োজন। (I17224)
  • সব Jetpack XR প্যাকেজে RequiresApi(34) বিধিনিষেধ সরিয়ে দেওয়া হয়েছে। এই বিধিনিষেধটি অপ্রয়োজনীয় ছিল কারণ Jetpack XR বর্তমানে শুধুমাত্র API লেভেল 34+ সহ ডিভাইসে উপলভ্য। (Iae0f8)
  • মূল SceneCore আর্টিফ্যাক্টে (xr:scenecore:scenecore) শুধুমাত্র Kotlin-স্টাইলের অ্যাসিঙ্ক API থাকবে। মানানসই API অ্যাক্সেস করার জন্য 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-এর জন্য Proguard মিনিফিকেশন কাজ করে এমন অতিরিক্ত সমাধান SceneCore (I4f47e)
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে InteractableComponent, hitPosition-এর InputEvent-এর HitInfo-তে থাকলে ক্র্যাশ হতে পারে, যদি সিস্টেম থেকে পাওয়া hitPosition নাল হয় (I7a695)
  • Config *Mode vals-এর নাম পরিবর্তন করে সেগুলির আচরণ প্রতিফলিত করা হয়েছে। (I6d247)
  • SceneCore TestApp-এ FOV ও HitTest সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I2c51e)
  • SpatialCapabilities.hasCapability()-এ বাগ সমাধান করা হয়েছে যেখানে বিটওয়াইজ OR-এর সাথে পাস করা যেকোনও ক্ষমতা সত্য হলে, শুধুমাত্র সব ক্ষমতা সত্য হলেই সত্য রিটার্ন করার পরিবর্তে সত্য রিটার্ন করত। (I2cd40)
  • SurfaceEntity.StereoMode.TOP_BOTTOM আপডেট করে বাঁদিকের চোখে উপরের ম্যাপ ও ডানদিকের চোখে নিচের ম্যাপ দেখানো হয়। (I4ae68)

ভার্সন 1.0.0-alpha04

৭ মে, ২০২৫

androidx.xr.scenecore:scenecore:1.0.0-alpha04 ও androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha04-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • এম্বেড করা অ্যাক্টিভিটি নেই এমন প্যানেল এন্টিটিতে এখন ব্যাকহ্যান্ডেলিং কাজ করবে। ব্যাকহ্যান্ডলিং কাজ করার জন্য আপনাকে Android ম্যানিফেস্টে android:enableOnBackInvokedCallback= "true" উল্লেখ করতে হবে।
  • StereoSurfaceEntity এখন দুটি নতুন StereoMode ভ্যালুর মাধ্যমে MV-HEVC প্লেব্যাক সাপোর্ট করে: MULTIVIEW_LEFT_PRIMARY এবং MULTIVIEW_RIGHT_PRIMARY.
  • PanelEntity.setSize ও PanelEntity.getSize এখন প্যারেন্ট স্পেসে সাইজ রিটার্ন করে।
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha এবং Entity.getAlpha এখন একটি নতুন প্যারামিটার relativeTo নেয়, যা বিভিন্ন স্পেসের সাথে সম্পর্কিত মান পেতে/সেট করতে দেয়। কাজ করে এমন ভ্যালু হল প্যারেন্ট, অ্যাক্টিভিটি ও রিয়েল ওয়ার্ল্ড স্পেস এবং এই প্যারামিটারের ডিফল্ট ভ্যালু হল প্যারেন্ট।
  • SessionExt.kt-এ স্পেশিয়াল ভিজিবিলিটি কলব্যাক এক্সটেনশন পদ্ধতি যোগ করা হয়েছে, যাতে ব্যবহারকারীর ফিল্ড অফ ভিউয়ের মধ্যে বা বাইরে সিন কন্টেন্ট কখন সরছে তা মনিটর করা যায়।
  • SpatialAudioTrack-এ setPointSourceParams যোগ করা হয়েছে, এর ফলে ট্র্যাক তৈরি হওয়ার পরে প্যারামিটার আপডেট করা যাবে।
  • Scenecore API-এর রেফারেন্স সহ নতুন ক্লাস, Scene যোগ করা হয়েছে। সেশন এক্সটেনশন প্রপার্টি হিসেবে সিন অ্যাক্সেস করা যাবে। SessionExt-এর মধ্যে থাকা ফাংশন Scene-এ সরানো হয়েছে, তাই ইমপোর্ট অ্যাডজাস্ট করতে হবে; যেমন, SessionExt.getScene(session)।addSpatialCapababilitiesChangedListener বনাম SessionExt.addSpatialCapabilitiesChangedListener.
  • ActivityPose.hitTestAsync যোগ করা হয়েছে, এর ফলে ভার্চুয়াল কন্টেন্টের বিরুদ্ধে hitTest চালু করা হয়েছে।
  • নতুন কম্পোনেন্ট টাইপ SpatialPointerComponent যোগ করা হয়েছে, এর ফলে ক্লায়েন্টরা পয়েন্টারের জন্য রেন্ডার করা আইকন নির্দিষ্ট করতে বা আইকন বন্ধ করতে পারবেন। এই কম্পোনেন্ট বর্তমানে শুধুমাত্র PanelEntityটি ইনস্ট্যান্সের সাথে অ্যাটাচ করা যাবে।
  • নতুন PanelEntity ফ্যাক্টরি চালু করা হচ্ছে, যা মিটার বা পিক্সেল, যেকোনও একটিতে প্যানেলের ডাইমেনশন নেয়। পুরনো PanelEntity ফ্যাক্টরি থেকে প্যানেলের জন্য দুটি ডাইমেনশন টাইপ প্যারামিটার সরিয়ে দেওয়া হয়েছে।

API-তে পরিবর্তন

  • সব Jetpack XR প্যাকেজে RequiresApi(34) বিধিনিষেধ সরিয়ে দেওয়া হয়েছে। এই বিধিনিষেধটি অপ্রয়োজনীয় ছিল কারণ Jetpack XR বর্তমানে শুধুমাত্র API লেভেল 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-এর জন্য এখন Session.configure()-এ PlaneTrackingMode কনফিগার করতে হবে।
  • SpatialUser API-কে এখন Session.configure()-এ HeadTrackingMode কনফিগার করতে হবে।
  • ResizableComponent অ্যাটাচ করা না থাকলে, এটি ERROR-লেভেল লগের পরিবর্তে INFO-লেভেল লগ দেবে।
  • Fov ক্লাস এখন একটি সাধারণ Kotlin ক্লাস।
  • Entity.kt-কে ভাগ করে প্রতিটি কনক্রিট এন্টিটি টাইপকে তার নিজস্ব ফাইলে রাখুন।
  • নতুন PanelEntity তৈরি করার সময়, বেশিরভাগ ভিউকে FrameLayout-এর সাথে আবার প্যারেন্ট করা হবে। এটি স্পেশিয়াল প্যানেলের সাথে LayoutInspector ব্যবহার করার সুবিধা দেয়।
  • অ্যাপ ডিবাগিংয়ে সাহায্য করার জন্য বর্তমানে ব্যবহৃত XrExtensions ইনস্ট্যান্স এখন প্ল্যাটফর্মে রেজিস্টার করা হয়েছে।

সমস্যার সমাধান

  • MovableComponent ও AnchorPlacement সহ PanelEntity সরানো হলে ক্র্যাশ হওয়া আটকাতে একটি সমাধান যোগ করা হয়েছে
  • ResizableComponent, onResizeStart কলব্যাকে পুরনো সাইজ প্রদান করছিল, সেই সমস্যার সমাধান করা হয়েছে।
  • JxrPlatformAdapterAxr-এর dispose() একাধিকবার কল করা হলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে।

ভার্সন 1.0.0-alpha03

২৬ ফেব্রুয়ারি, ২০২৫

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 মিনিফিকেশন কাজ করে এমন অতিরিক্ত সমাধান (I4f47e)
  • মিনিফাই করা ক্লায়েন্টের জন্য AbstractMethodError আটকাতে Jetpack XR Scenecore ProGuard নিয়ম আপডেট করা হয়েছে। (I91a01)

ভার্সন 1.0.0-alpha02

১২ ফেব্রুয়ারি, ২০২৫

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 সঠিকভাবে আপডেট নাও হতে পারে। পরের OnSpaceUpdated কলে ActivitySpace-এ এটি আপডেট করা হবে

ব্রেকিং ও আচরণগত পরিবর্তন

  • প্যানেলের প্রস্থ বা উচ্চতা ৩২dp-এর থেকে ছোট হলে PanelEntity ও ActivityPanelEntity-এর ডিফল্ট কর্নার রেডিয়াস ৩২dp বা তার থেকে ছোট হবে

নতুন API ও ক্ষমতা

  • StereoSurface.CanvasShape-এর মাধ্যমে Spherical ও Hemispherical ক্যানভাস তৈরি করে ইমারসিভ মিডিয়া রেন্ডার করা যায়।
  • StereoSurfaceEntity.create() এখন CanvasShape প্যারামিটার গ্রহণ করে। (এই প্যারামিটারটি বর্তমানে উপেক্ষা করা হচ্ছে, তবে ভবিষ্যতের রিলিজে ব্যবহার করা হবে)
  • StereoSurfaceEntity.create() আর Dimensions প্যারামিটার নেয় না। CanvasShape সেট করার মাধ্যমে অ্যাপ্লিকেশনকে ক্যানভাসের সাইজ নিয়ন্ত্রণ করতে হবে
  • StereoSurfaceEntity-এ CanvasShape জন মেম্বার আছেন যাদের ডায়নামিক হিসেবে সেট করা যেতে পারে।
  • StereoSurfaceEntity.dimensions এখন শুধু-পঠনযোগ্য প্রপার্টি; অ্যাপ্লিকেশনকে CanvasShape সেট করে ডাইমেনশন পরিবর্তন করতে হবে।
  • StereoSurfaceEntity এখন কনস্ট্রাকশনের পরে StereoMode আবার সেট করার অনুমতি দেয়।

অন্যান্য পরিবর্তন

  • কম্পাইল-টাইম minSDK কমিয়ে ২৪ করা হয়েছে। সব Jetpack XR API-এর রানটাইমে API 34 প্রয়োজন হয়।
  • SceneCore-এর সেশন ফ্যাক্টরি (Session.create) আর SCENE_UNDERSTANDING অনুমতি পাওয়ার জন্য কোনও ইন্টেন্ট লঞ্চ করে না। এর পরিবর্তে, অ্যাঙ্কর তৈরি করার চেষ্টা করার আগে ক্লায়েন্ট অ্যাপ্লিকেশনকে ব্যবহারকারীর কাছ থেকে স্পষ্টভাবে অনুমতি চাইতে হবে। ব্যবহারকারী অনুমতি না দিলে অ্যাঙ্কর তৈরি করা যাবে না।

সমস্যার সমাধান

  • getActivitySpacePose()-এর সমস্যা সমাধান করা হয়েছে যাতে ActivitySpace স্কেলকে বিবেচনা করা যায়। এর জন্য, সবসময় নন-স্কেলড মিটার না দেখিয়ে স্কেলড মিটারে ট্রান্সলেশন ভ্যালু দেখানো হয়। transformPoseTo এখন সোর্স বা ডেস্টিনেশনে ActivitySpace থাকলে কোঅর্ডিনেট পরিবর্তন গণনা করার জন্য সঠিক ইউনিটও ব্যবহার করে।
  • setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) ব্যবহার করে কোনও নাল স্কাইবক্স সংক্রান্ত পছন্দ পাস করা হলে, স্কাইবক্স এখন সম্পূর্ণ কালো স্কাইবক্সে সেট করা হবে। সিস্টেম ডিফল্ট স্কাইবক্স ও জ্যামিতিতে ফিরে যেতে, setSpatialEnvironmentPreference(null). ব্যবহার করুন

ভার্সন 1.0.0-alpha01

১২ ডিসেম্বর, ২০২৪

androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 রিলিজ করা হয়েছে।

প্রাথমিক রিলিজের ফিচার ইমারসিভ দৃশ্য ও এনভায়রনমেন্ট তৈরি ও ম্যানিপুলেট করার জন্য Jetpack SceneCore-এর প্রাথমিক ডেভেলপার রিলিজ, একটি 3D সিন গ্রাফ লাইব্রেরি। এই লাইব্রেরি আপনাকে একে অপরের এবং আপনার ভার্চুয়াল বা বাস্তব-জগতের পরিবেশের সাথে সম্পর্কিত 3D মডেল এবং কন্টেন্ট প্যানেল প্লেস ও সাজাতে দেয়।

  • SpatialEnvironment: আপনার এনভায়রনমেন্টের XR দৃশ্যের ব্যাকড্রপ হিসেবে স্কাইবক্স ইমেজ এবং/অথবা 3D মডেল জিওমেট্রি সহ সম্পূর্ণ ইমারসিভ অভিজ্ঞতা তৈরি করুন। অথবা পাসথ্রু চালু করুন, যাতে আপনার ভার্চুয়াল দৃশ্য ব্যবহারকারীর বাস্তব জগতের পরিবেশের সাথে ইন্টিগ্রেট করা যায়।
  • PanelEntity: স্পেশিয়ালাইজড প্যানেলে স্ট্যান্ডার্ড Android লেআউট ও অ্যাক্টিভিটি এম্বেড করে আপনার 3D সিনের সাথে 2D কন্টেন্ট যোগ করুন। এই প্যানেলগুলি ভাসতে পারে বা বাস্তব জগতের সারফেসে অ্যাঙ্কর করা যেতে পারে।
  • GltfModelEntity: আপনার দৃশ্যে 3D মডেল প্লেস, অ্যানিমেট ও ইন্ট্যার‍্যাক্ট করুন। আগে থেকে থাকা মডেলের সাথে সহজে ইন্টিগ্রেশন করার জন্য SceneCore, glTF ফাইল ফর্ম্যাট সাপোর্ট করে।
  • SpatialAudio: সম্পূর্ণভাবে নিমজ্জিত, স্পেশিয়ালাইজড সাউন্ডের জন্য আপনার 3D সিনের মধ্যে অ্যাম্বিয়েন্ট ও পয়েন্ট অডিও সোর্স যোগ করুন।
  • StereoSurfaceEntity: SceneCore, Android Surface-এ রেন্ডার করা কন্টেন্টের বাঁদিক/ডানদিকের চোখের রাউটিং সাপোর্ট করে। এটি পাশাপাশি বা উপর-নিচে ফর্ম্যাটে স্টেরিওস্কোপিক কন্টেন্ট রেন্ডার করতে ব্যবহার করা যেতে পারে, যেমন স্টেরিও ফটো, 3D ভিডিও বা অন্যান্য ডায়নামিক রেন্ডার করা UI। অ্যাপ্লিকেশনকে ভিডিও ডিকোডিংয়ের জন্য MediaPlayer বা ExoPlayer ব্যবহার করতে হবে।
  • কম্পোনেন্ট সিস্টেম: SceneCore আপনার XR কন্টেন্টে ক্ষমতা যোগ করার জন্য একটি শক্তিশালী এবং নমনীয় কম্পোনেন্ট সিস্টেম অফার করে, যার মধ্যে ব্যবহারকারীদের জন্য মডেল এবং প্যানেলের সাথে সরানো, রিসাইজ করা এবং ইন্টার‍্যাক্ট করার জন্য অ্যাফোর্ডেন্স অন্তর্ভুক্ত।
  • অ্যাঙ্কর: পাসথ্রু চালু থাকলে, আপনি আসল সারফেসে প্যানেল ও মডেল অ্যাটাচ করতে পারবেন, এর ফলে ব্যবহারকারীরা বাস্তব-জগতের পরিবেশে ভার্চুয়াল কন্টেন্ট নির্বিঘ্নে ইন্টিগ্রেট করতে পারবেন।
  • ব্যবহারকারীর পোজ: ব্যবহারকারীর পজিশনের আশেপাশে আপনার কন্টেন্টকে ওরিয়েন্ট করতে, ভার্চুয়াল দৃশ্যে ব্যবহারকারীর লোকেশন অ্যাক্সেস করুন।
  • SpatialCapabilities: উপলভ্য হলে, UI কন্টেন্টের 3D পজিশনিংয়ের মতো স্পেশিয়ালাইজড ক্যাপাবিলিটির সুবিধা নেয় এমন সম্পূর্ণ অ্যাডাপ্টিভ অ্যাপ তৈরি করুন। শুধু তাই নয়, অ্যাপ চলাকালীন ব্যবহারকারী কীভাবে Android XR ডিভাইস ব্যবহার করছেন তার ভিত্তিতে অভিজ্ঞতা পরিবর্তন করতে, আপনার অ্যাপ ক্ষমতাতে হওয়া পরিবর্তনগুলিও মনিটর করতে পারে।

পরিচিত সমস্যা

  • বর্তমানে Jetpack SceneCore ব্যবহার করার জন্য minSDK-এর ভার্সন ৩০ হতে হবে। এর বিকল্প হিসেবে, minSDK 23-এর সাথে বিল্ড ও রান করতে, নিম্নলিখিত ম্যানিফেস্ট এন্ট্রি <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> যোগ করুন।
  • বিভিন্ন পরিস্থিতিতে সেশন বাতিল হয়ে যেতে পারে যা অটোমেটিক অ্যাক্টিভিটি আবার তৈরি করে, এর মধ্যে প্রধান প্যানেলের সাইজ পরিবর্তন করা, পেরিফেরাল কানেক্ট করা এবং লাইট ও ডার্ক মোডের মধ্যে পরিবর্তন করা অন্তর্ভুক্ত। আপনি সেশন বাতিল করা সংক্রান্ত সমস্যার সম্মুখীন হলে, এর সমাধানগুলির মধ্যে রয়েছে আপনার মূল প্যানেলকে রিসাইজ করা যায় না এমন করে তোলা, ডায়নামিক প্যানেল এন্টিটি ব্যবহার করা, নির্দিষ্ট কনফিগারেশন পরিবর্তনের জন্য অ্যাক্টিভিটি রিক্রিয়েশন বন্ধ করা বা লাইট/ডার্ক মোড থিম পরিবর্তন বন্ধ করা।
  • 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 চালু করবেন সেই সম্পর্কে আরও জানতে এই গাইড দেখুন।