জেটপ্যাক সিনকোর

3D কন্টেন্ট ব্যবহার করে অ্যান্ড্রয়েড এক্সআর সিন গ্রাফ তৈরি ও পরিচালনা করুন।
সর্বশেষ আপডেট স্থিতিশীল রিলিজ রিলিজ প্রার্থী বিটা রিলিজ আলফা রিলিজ
২৫ মার্চ, ২০২৬ - - - ১.০.০-আলফা১৩

নির্ভরতা ঘোষণা করা

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

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

গ্রোভি

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

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

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

কোটলিন

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

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

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

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

প্রতিক্রিয়া

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

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

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

সংস্করণ ১.০

সংস্করণ 1.0.0-alpha13

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

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 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 এবং পরবর্তী রিলিজগুলোতে সমাধান করা হয়েছে। প্রভাবিত অ্যাপগুলোকে সর্বশেষ সংস্করণে আপডেট করা উচিত।

এপিআই পরিবর্তন

  • ActivitySpace.addOnSpaceUpdatedListener এবং ActivitySpace.removeOnSpaceUpdatedListener এর নাম পরিবর্তন করে addOnOriginChangedListener এবং removeOnOriginChangedListener রাখা হয়েছে। AnchorEntity.setOnSpaceUpdatedListener এর নাম পরিবর্তন করে setOnOriginChangedListener রাখা হয়েছে। ( I5d8fb )
  • FakeEntity তে public name প্রপার্টি যোগ করা হয়েছে এবং FakePanelEntity তে ভিউটিকে পাবলিক করা হয়েছে। ( Ifa1f9 )

বাগ সংশোধন

  • নতুন সিস্টেম ইমেজগুলিতে ( I57d04 ) স্থির পিক্সেল ঘনত্ব গণনা

সংস্করণ 1.0.0-alpha11

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

androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha11-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • 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-গুলোর কার্যকারিতা Jetpack XR-এর জন্য ARCore-এর মধ্যে থাকা 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-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

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

বাগ সংশোধন

  • সেশন ধ্বংস হয়ে গেলে এবং একটি SpatialModeChangeEvent ( If44e8 ) পেলে যে সম্ভাব্য ক্র্যাশটি ঘটতে পারতো, তা সমাধান করা হয়েছে।
  • একটি বাগ সংশোধন করা হয়েছে যার কারণে কোনো Activity থেকে বের হওয়ার বা পুনরায় প্রবেশ করার সময় একটি 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 )

এপিআই পরিবর্তন

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

সংস্করণ 1.0.0-alpha08

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

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 অ্যাক্সেস করা হলে একটি ব্যতিক্রম (Exception) থ্রো করা হয়। ( 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-এ এই কমিটগুলো রয়েছে।

এপিআই পরিবর্তন

  • fixedAspectRatio নাম পরিবর্তন করে isFixedAspectRatioEnabled রাখা হয়েছে এবং এটিকে একটি বুলিয়ান প্রপার্টিতে পরিণত করা হয়েছে ( I5c4e8 , b/440588971 )
  • Scenecore Fakes এখন xr:scenecore:scenecore-testing মডিউলে অবস্থিত। ( Idd951 )
  • shouldAutoHideContent এর নাম পরিবর্তন করে isAutoHideContentWhileResizingEnabled এবং shouldAlwaysShowOverlay এর নাম পরিবর্তন করে isAlwaysShowOverlayEnabled রাখা হয়েছে ( I97c36 , b/432335421 )
  • পাঠযোগ্যতার জন্য SceneCore TextureSampler কনস্ট্যান্টগুলো আপডেট করা হয়েছে, উদাহরণস্বরূপ TextureSampler.MinFilter.LINEAR এখন TextureSampler.MIN_FILTER_LINEAR ( Ib159c )।
  • Scene-এর setKeyEntity সেটারটি keyEntity ভেরিয়েবলের সাথে একীভূত করা হয়েছে। keyEntity AnchorEntity মতো কোনো অস্থানান্তরযোগ্য Entity-তে সেট করলে, বুলিয়ান false রিটার্ন করার পরিবর্তে একটি IllegalArgumentException থ্রো হবে। ( I62080 , b/428721695 , b/422215745 )
  • Scene-এর 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.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 ফাইলে শীর্ষ-স্তরের মেথড হিসেবে স্থানান্তর করা হয়েছে এবং প্রথম প্যারামিটার হিসেবে Session গ্রহণ করে ( 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-এ এই কমিটগুলো রয়েছে।

এপিআই পরিবর্তন

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

এপিআই পরিবর্তন

এই রিলিজের জন্য SceneCore এর API-তে ব্যাপক পরিবর্তন আনা হয়েছে। বেশ কিছু ক্লাসের নাম পরিবর্তন করা হয়েছে এবং/অথবা সেগুলোকে ভিন্ন মডিউলে স্থানান্তর করা হয়েছে, এবং বেশিরভাগ গেটার/সেটার মেথডকে কোটলিন প্রপার্টি দিয়ে প্রতিস্থাপন করা হয়েছে। যদিও আমরা আমাদের প্রথম বিটা রিলিজের আগ পর্যন্ত ভবিষ্যতে 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 এর গেটার এবং সেটারগুলোকে প্রোপার্টি দিয়ে প্রতিস্থাপন করা হয়েছে। PanelEntity.size প্রোপার্টিটি Float3dSize থেকে Float2dSize এ পরিবর্তন করা হয়েছে। অপ্রচলিত মেথড androidx.xr.scenecore.PanelEntity.getPixelDimensions সরানো হয়েছে, এর পরিবর্তে getSizeInPixels ব্যবহার করুন। ( Icc174 )
  • androidx.xr.scenecore.OnSpaceUpdatedListener Runnable দ্বারা প্রতিস্থাপন করা হয়েছে। ( I19308 )
  • SpatialUser.getCameraViews() একটি প্রপার্টি দিয়ে প্রতিস্থাপন করা হয়েছে। ( Ib0cc5 ) ExrImage এবং GltfModel: create মেথডগুলোকে suspend ফাংশনে পরিবর্তন করা হয়েছে; create প্যারামিটারগুলোকে String এর পরিবর্তে Uri বা Path গ্রহণ করার জন্য পরিবর্তন করা হয়েছে। ( Id8883 ) ( I0d247 ), ( I25706 )
  • SpatialEnvironment.requestFullSpaceMode এবং SpatialEnvironment.requestHomeSpaceMode Scene-এ সরানো হয়েছে, উদাহরণস্বরূপ session.scene.requestFullSpaceMode() -এর পরিবর্তে session.scene.spatialEnvironment.requestFullSpaceMode() ব্যবহার করুন। addOnPassthroughOpacityChangedListener এবং addOnSpatialEnvironmentChangedListener এখন ওভাররাইড রয়েছে যা ঐচ্ছিক Executors গ্রহণ করে। ( 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 এ পরিবর্তন করা হয়েছে। এটি আর null ভ্যালু গ্রহণ করে না। এর পরিবর্তে, কোনো অপাসিটি প্রেফারেন্স নেই তা বোঝাতে SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE ব্যবহৃত হয়। ( I40107 )
  • create মেথডে windowBoundsPx প্যারামিটারটিকে pixelDimensions এ এবং এর টাইপকে Rect থেকে IntSize2d তে আপডেট করা হয়েছে। ( I1926e )
  • SpatialEnvironment কনস্ট্রাক্টর এখন অভ্যন্তরীণ ( I75a51 )
  • SpatialPointerIconNone এবং SpatialPointerIconCircle ক্লাস দুটিকে তাদের সহযোগী অবজেক্ট SpatialPointerIcon.NONE এবং SpatialPointerIcon.CIRCLE দ্বারা প্রতিস্থাপন করা হয়েছে ( I416d2 )
  • SpatialPointerComponent এর SpatialPointerIcon এখন আর null হতে পারে না। সিস্টেমের ডিফল্ট পয়েন্টার আইকন ব্যবহার করা হবে তা বোঝাতে 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 কে add/remove মেথড দিয়ে প্রতিস্থাপন করা হয়েছে। ( I4c956 )
  • AnchorPlacement: planeTypeFilter নাম পরিবর্তন করে anchorablePlaneOrientations রাখা হয়েছে, planeSemanticFilter নাম পরিবর্তন করে anchorablePlaneSemanticTypes রাখা হয়েছে। একটি AnchorEntity বা ActivitySpace এ একটি MovableComponent যোগ করলে false রিটার্ন করবে, MoveListener নাম পরিবর্তন করে EntityMoveListener shouldDisposeParentAnchor নাম পরিবর্তন করে disposeParentOnReAnchor systemMovable রাখা হয়েছে, create ফাংশন থেকে systemMovable সরিয়ে creeateCustomMovable , createSystemMovable এবং createAnchorable ( If11c4 ) যোগ করা হয়েছে।
  • SurfaceEntity.featherRadiusX/Y সরিয়ে দেওয়া হয়েছে এবং EdgeFeatheringParams নামে একটি ক্লাস কনসেপ্ট যোগ করা হয়েছে। ( Ic78fc )
  • PanelEntity.enablePanelDepthTest() মেথডটি panelClippingConfig প্রপার্টি দ্বারা প্রতিস্থাপিত হয়েছে। ডেপথ-টেস্টিং চালু করতে Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) সেট করুন অথবা এটি বন্ধ করতে PanelClippingConfig(isDepthTestEnabled = false) সেট করুন। ( I0cbe0 )
  • Scene.mainPanelEntity এখন PanelEntity এর পরিবর্তে MainPanelEntity টাইপের ( I7125a )
  • Scene-এর setFullSpaceMode মেথডের নাম পরিবর্তন করে configureBundleForFullSpaceModeLaunch এবং setFullSpaceModeWithEnvironmentInherited মেথডের নাম পরিবর্তন করে configureBundleForFullSpaceModeLaunchWithEnvironmentInherited রাখা হয়েছে। ( I0cbe0 ) ( I0cbe0 )
  • SpatialVisibility এর UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV, এবং WITHIN_FOV মানগুলির নাম পরিবর্তন করে যথাক্রমে SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW, এবং SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW রাখা হয়েছে ( Ie7e8c )
  • SpatialVisibility ক্লাসটিকে const Int ভ্যালু সহ একটি পাবলিক অবজেক্ট দ্বারা প্রতিস্থাপন করা হয়েছে। setSpatialVisibilityChangedListener এখন Consumer<Int> এর পরিবর্তে Consumer<SpatialVisibility> গ্রহণ করে ( Ie7e8c )
  • PointerCaptureComponent ধ্রুবকগুলোর নাম পরিবর্তন করে PointerCaptureComponent.PointerCaptureState অবজেক্টে স্থানান্তর করা হয়েছে ( I9c7ac )
  • PointerCaptureComponents' StateListener Consumer<Int> দ্বারা প্রতিস্থাপন করা হয়েছে। ( I9c7ac )
  • InputEventListener Consumer<InputEvent> দ্বারা প্রতিস্থাপন করা হয়েছে ( I9c7ac )
  • setPreferredAspectRatio Scene ক্লাস থেকে SpatialWindow অবজেক্টে স্থানান্তর করা হয়েছে এবং এটি প্রথম প্যারামিটার হিসেবে Session গ্রহণ করে। ( I7b717 )
  • Entity.setHidden() এর পরিবর্তে Entity.setEnabled() এবং Entity.isHidden() এর পরিবর্তে Entity.isEnabled() ব্যবহৃত হবে। setHidden(false) এবং setEnabled(true) সমান এবং isHidden() == !isEnabled() । ( Icf0de )
  • Entity.contentDescription টাইপ String থেকে CharSequence এ পরিবর্তন করা হয়েছে। ( Ie59be )
  • পর্যাপ্ত অনুমতি না দেওয়া হলে Session.create এবং Session.configure এখন SessionCreatePermissionsNotGranted বা SessionConfigurePermissionsNotGranted রিটার্ন করার পরিবর্তে SecurityException থ্রো করে। ( I7c488 )
  • ResizableComponent.create জন্য এখন একটি Consumer<ResizeEvent> ResizeEventListener Consumer<ResizeEvent> ResizableComponent.size দ্বারা প্রতিস্থাপন করা হয়েছে। ResizableComponent.affordanceSize ResizableComponent.minimumSize এর নাম পরিবর্তন করে ResizableComponent.minimumEntitySize ResizableComponent.maximumSize নাম পরিবর্তন করে ResizableComponent.maximumEntitySize রাখা হয়েছে। ResizableComponent.autoHideContent এর নাম পরিবর্তন করে ResizableComponent.maximumEntitySize রাখা হয়েছে। ResizableComponent.autoHideContent-এর নাম পরিবর্তন করে ResizableComponent.shouldAutoHideContent রাখা হয়েছে। ResizableComponent.forceShowResizeOverlay নাম পরিবর্তন করে ResizableComponent.shouldAlwaysShowOverlay রাখা হয়েছে। ( I97a2d )
  • androidx.xr.scenecore এবং androidx.xr.compose এর জন্য minSDK কমিয়ে 24 করা হয়েছে। XR প্যাকেজগুলোর জন্য রানটাইমে এখনও API 34 প্রয়োজন। ( I17224 )
  • সমস্ত Jetpack XR প্যাকেজ থেকে RequiresApi(34) সীমাবদ্ধতা সরানো হয়েছে। এই সীমাবদ্ধতাটি অপ্রয়োজনীয় ছিল কারণ Jetpack XR বর্তমানে শুধুমাত্র API লেভেল 34+ যুক্ত ডিভাইসগুলিতে উপলব্ধ। ( Iae0f8 )
  • মূল SceneCore আর্টিফ্যাক্ট ( xr:scenecore:scenecore )-এ শুধুমাত্র কোটলিন-স্টাইলের অ্যাসিঙ্ক এপিআই থাকবে। জাভা ডেভেলপাররা সামঞ্জস্যপূর্ণ এপিআই অ্যাক্সেস করার জন্য xr:scenecore:scenecore-guava লাইব্রেরির উপর নির্ভর করতে পারেন। ( If221b )
  • Kotlin 2.0 দিয়ে প্রকাশিত প্রোজেক্টগুলি ব্যবহার করার জন্য KGP 2.0.0 বা তার নতুন সংস্করণ প্রয়োজন ( Idb6b5 )
  • এই লাইব্রেরিটি এখন JSpecify নালনেস অ্যানোটেশন ব্যবহার করে, যা টাইপ-ইউজ। সঠিক ব্যবহার নিশ্চিত করতে কোটলিন ডেভেলপারদের নিম্নলিখিত কম্পাইলার আর্গুমেন্টটি ব্যবহার করা উচিত: -Xjspecify-annotations=strict (কোটলিন কম্পাইলারের ২.১.০ সংস্করণ থেকে এটি ডিফল্ট হিসেবে ব্যবহৃত হয়) ( Ia8420 )
  • যেসব async মেথড ListenableFuture রিটার্ন করে, সেগুলোকে Kotlin suspend ফাংশন দিয়ে প্রতিস্থাপন করা হয়েছে। যেসব জাভা ডেভেলপার Kotlin suspend ফাংশনের পরিবর্তে ListenableFuture ভিত্তিক async মেথড ব্যবহার করতে চান, তাদের এখন :xr:scenecore-scenecore-guava তে থাকা এক্সটেনশন ফাংশনগুলো ব্যবহার করতে হবে। উদাহরণস্বরূপ, GuavaExrImage এ Guava-এর সমতুল্য ExrImage async ফাংশনগুলো, GuavaScenePose এ Guava-এর সমতুল্য ScenePose async ফাংশনগুলো, GuavaGltfModelGuava-equivalent GltfModel async ফাংশনগুলো ইত্যাদি রয়েছে। ( If7283 ) ( I0af60 ) ( If7283 ) ( Ia8515 ) ( I4efdf ) ( I54bbf ) ( I3467a ) ( I82a33 )

বাগ সংশোধন

  • মিনিফাইড ক্লায়েন্টদের জন্য AbstractMethodError প্রতিরোধ করতে Jetpack XR Scenecore ProGuard নিয়মটি আপডেট করা হয়েছে। ( I91a01 )
  • Jetpack XR SceneCore ( I4f47e )-এর জন্য Proguard মিনিফিকেশন সমর্থন করার অতিরিক্ত সংশোধন।
  • একটি বাগ সংশোধন করা হয়েছে যেখানে একটি InteractableComponent ক্র্যাশ করতে পারতো যদি InputEvent এর HitInfo-তে hitPosition hitPosition থেকে null হলে ক্র্যাশ করতো ( I7a695 )।
  • কনফিগ *মোড ভ্যালুগুলোর আচরণ প্রতিফলিত করার জন্য সেগুলোর নাম পরিবর্তন করা হয়েছে। ( I6d247 )
  • SceneCore TestApp-এ FOV এবং HitTest সংক্রান্ত সমস্যাগুলি সমাধান করা হয়েছে। ( I2c51e )
  • SpatialCapabilities.hasCapability() ফাংশনের একটি বাগ সংশোধন করা হয়েছে, যেখানে এটি বিটওয়াইজ OR ব্যবহার করে দেওয়া ক্যাপাবিলিটিগুলোর মধ্যে যেকোনো একটি সত্য হলেই true রিটার্ন করত, অথচ সবগুলো সত্য হলেই কেবল true রিটার্ন করার কথা ছিল। ( 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: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 স্পেস, এবং এই প্যারামিটারের ডিফল্ট মান হলো Parent।
  • দৃশ্যের বিষয়বস্তু কখন ব্যবহারকারীর দৃষ্টিসীমার ভিতরে বা বাইরে চলে যায় তা নিরীক্ষণ করার জন্য SessionExt.kt এ স্থানিক দৃশ্যমানতা কলব্যাক এক্সটেনশন মেথড যোগ করা হয়েছে।
  • SpatialAudioTracksetPointSourceParams যুক্ত করা হয়েছে, যার ফলে ট্র্যাকটি তৈরি হওয়ার পরেও প্যারামিটারগুলো আপডেট করা যাবে।
  • Scenecore API-এর রেফারেন্স সহ Scene নামে একটি নতুন ক্লাস যোগ করা হয়েছে। Scene, Session-এর একটি এক্সটেনশন প্রপার্টি হিসেবে অ্যাক্সেসযোগ্য হবে। SessionExt এর ভেতরের ফাংশনগুলো Scene-এ স্থানান্তর করা হয়েছে, তাই ইম্পোর্টগুলো সামঞ্জস্য করতে হবে; উদাহরণস্বরূপ, SessionExt.getScene(session) . addSpatialCapababilitiesChangedListener বনাম SessionExt.addSpatialCapabilitiesChangedListener
  • ActivityPose.hitTestAsync যোগ করা হয়েছে, যা ভার্চুয়াল কন্টেন্টের বিরুদ্ধে hitTest করার সুযোগ করে দেয়।
  • SpatialPointerComponent নামে একটি নতুন কম্পোনেন্ট টাইপ যোগ করা হয়েছে, যা ক্লায়েন্টদের পয়েন্টারের জন্য রেন্ডার করা আইকন নির্দিষ্ট করার অথবা আইকনটি নিষ্ক্রিয় করার সুযোগ দেয়। এই কম্পোনেন্টটি বর্তমানে শুধুমাত্র PanelEntity ইনস্ট্যান্সের সাথে সংযুক্ত করা যাবে।
  • নতুন PanelEntity ফ্যাক্টরি চালু করা হয়েছে, যা প্যানেলের ডাইমেনশন মিটার বা পিক্সেলে গ্রহণ করে। প্যানেলের জন্য দুটি Dimension টাইপ প্যারামিটার গ্রহণকারী পুরোনো PanelEntity ফ্যাক্টরিটি সরিয়ে ফেলা হয়েছে।

এপিআই পরিবর্তন

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

বাগ সংশোধন

  • MovableComponent এবং AnchorPlacement সহ একটি PanelEntity সরানো হলে যে ক্র্যাশটি ঘটতে পারতো, তা প্রতিরোধ করার জন্য একটি সমাধান যোগ করা হয়েছে।
  • onResizeStart কলব্যাকে ResizableComponent পুরনো সাইজ প্রদানের সমস্যাটি সমাধান করা হয়েছে।
  • 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 ( I4f47e )-এর জন্য Proguard মিনিফিকেশন সমর্থন করার অতিরিক্ত সংশোধন।
  • মিনিফাইড ক্লায়েন্টদের জন্য 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() প্যানেলটিকে পরবর্তীবার না সরানো পর্যন্ত কার্যকর নাও হতে পারে, প্যানেলটিকে তার বর্তমান অবস্থানে সরিয়ে এই সমস্যার সমাধান করা যেতে পারে।
  • যখন ActivitySpaceBoundsChanged কল করা হয়, তখন কিছু 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 কমিয়ে ২৪ করা হয়েছে। রানটাইমে সমস্ত Jetpack XR API-এর জন্য এখনও API 34 প্রয়োজন।
  • SceneCore এর সেশন ফ্যাক্টরি ( Session.create ) এখন আর SCENE_UNDERSTANDING পারমিশনটি পাওয়ার জন্য কোনো ইন্টেন্ট চালু করে না। এর পরিবর্তে, অ্যাঙ্কর তৈরি করার চেষ্টা করার আগে ক্লায়েন্ট অ্যাপ্লিকেশনকে অবশ্যই ব্যবহারকারীর কাছ থেকে স্পষ্টভাবে পারমিশনের জন্য অনুরোধ করতে হবে। ব্যবহারকারী পারমিশনটি না দিলে অ্যাঙ্কর তৈরি করা ব্যর্থ হবে।

বাগ সংশোধন

  • getActivitySpacePose() has been fixed to account for the ActivitySpace scale by returning translation values in scaled meters rather than always returning non-scaled meters. transformPoseTo now also uses the right units to compute coordinate changes when the ActivitySpace is involved in the source or destination.
  • The skybox will now be set to an all-black skybox whenever a null skybox preference is passed using setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) . To revert to the system default skybox and geometry, use setSpatialEnvironmentPreference(null).

সংস্করণ 1.0.0-alpha01

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

androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 is released.

Features of Initial Release Initial developer release of Jetpack SceneCore, a 3D scene graph library for creating and manipulating immersive scenes and environments. This library allows you to place and arrange 3D models and content panels relative to each other and your virtual or real-world environments.

  • SpatialEnvironment : Create fully immersive experiences with a skybox image and/or 3D model geometry as the backdrop for your XR scene of your environment. Or enable passthrough, so your virtual scene can integrate with the user's real-world environment.
  • PanelEntity : Add 2D content to your 3D scenes by embedding standard Android layouts and Activities into spatialized panels that can float or be anchored to real-world surfaces.
  • GltfModelEntity : Place, animate, and interact with 3D models in your scene. SceneCore supports the glTF file format for ease of integration with existing models.
  • SpatialAudio : Add ambient and point audio sources into your 3D scene for fully immersive, spatialized sound.
  • StereoSurfaceEntity : SceneCore supports left/right eye routing of content rendered onto an Android Surface. This can be used to render stereoscopic content in a side-by-side or top-bottom format, such as stereo photos, 3D video, or other dynamically rendered UIs. Applications should use MediaPlayer or ExoPlayer for video decoding.
  • Component System: SceneCore offers a robust and flexible component system for adding capabilities to your XR content, including affordances for users to move, resize, and interact with models and panels.
  • Anchor : With passthrough enabled, you can attach panels and models to actual surfaces, giving users seamless integration of virtual content in their real-world environment.
  • User Pose: Access the user's location in the virtual scene, to orient your content around the user's position.
  • SpatialCapabilities : Build fully adaptive apps that take advantage of spatialized capabilities when available, such as 3D positioning of UI content. Not only that, but your app can monitor for changes to capabilities while the app is executing, to modify the experience based on how the user is using their Android XR device.

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

  • Currently a minSDK of 30 is required to use Jetpack SceneCore. As a workaround add the following manifest entry <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> to be able to build and run with a minSDK of 23.
  • Session can become invalid in various situations that automatically recreate the Activity, including resizing a main panel, connecting peripherals, and changing between light and dark mode. If you encounter session invalidation issues, workarounds include making you main panel non-resizable, using a dynamic panel entity, disabling activity recreation for specific config changes or disabling light/dark mode theme changes.
  • Movable and Resizable components are not supported on GltfEntity.
  • Entity.getSize() is not supported on GltfEntity.
  • Jetpack XR apps required to request android.permission.SCENE_UNDERSTANDING permission in AndroidManifest.
  • Creating a session is only supported on an Android XR device. At this time, if you create a Session and try to use it on a non Android XR device, you'll get a RuntimeException.
  • Setting the skybox to null via `SpatialEnvironment.setSpatialEnvironmentPreference() does not result in a solid black skybox as documented. It may result in the system default skybox or no change to the current skybox.
  • SceneCore clients should add implementation(“com.google.guava:listenablefuture-1.0”) to their Gradle configuration for their app's dependencies. In a future release, scenecore will include this library as an api dependency so clients will not need to explicitly declare it.
  • SceneCore erroneously includes com.google.guava:guava-31.1-android and com.google.protobuf:protobuf-javalite as transitive dependencies. If this results in duplicate class errors in your build, these two dependencies can be safely excluded.
  • If your app uses SceneCore and enables ProGuard, it will crash when you create a Session. As a workaround, disable ProGuard. See this guide for more information on how to enable ProGuard.