XR-এর জন্য Jetpack রচনা

ঘোষণামূলকভাবে স্থানিক UI লেআউট তৈরি করুন যা Android XR-এর স্থানিক ক্ষমতার সুবিধা নেয়।
সর্বশেষ আপডেট স্থিতিশীল রিলিজ প্রার্থী মুক্তি বিটা রিলিজ আলফা রিলিজ
7 মে, 2025 - - - 1.0.0-আলফা04

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

XR রচনার উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।

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

গ্রোভি

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha04"

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

কোটলিন

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha04")

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

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

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

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

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

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

সংস্করণ 1.0

সংস্করণ 1.0.0-alpha04

7 মে, 2025

androidx.xr.compose:compose:1.0.0-alpha04 এবং androidx.xr.compose:compose-testing:1.0.0-alpha04 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha04 এই কমিট ধারণ করে।

নতুন বৈশিষ্ট্য

  • কাস্টম SubspaceModifier প্রকারগুলিকে কম্পোজিশনের স্থানীয় মানগুলি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য CompositionLocalConsumerSubspaceModifierNode ইন্টারফেস যোগ করা হয়েছে।
  • একটি নতুন SpatialPanel API যোগ করা হয়েছে যা কম্পোজ AndroidView বাস্তবায়ন শৈলী অনুসরণ করে এবং পূর্ববর্তী ViewBased SpatialPanel বাতিল করে।
  • VolumeConstraints.Unbounded যোগ করা হয়েছে। সীমাহীন সঙ্গী বস্তু যা সীমাহীন সীমাবদ্ধতার প্রতিনিধিত্ব করে।
  • একটি স্থানিক অডিও উৎসের অনুমতি দিতে SubspaceModifier.onPointSourceParams যোগ করা হয়েছে।
  • একটি সর্বজনীন ApplicationSubspace যোগ করা হয়েছে, যেখানে অ্যাপটি স্থানিক বিষয়বস্তু রেন্ডার করতে পারে এমন একটি 3D এলাকা সংজ্ঞায়িত করতে ঐচ্ছিক VolumeConstraints অফার করে। ডিফল্টরূপে, যদি কোনো সীমাবদ্ধতা নির্দিষ্ট করা না থাকে, তাহলে সাবস্পেসটি SpatialUser এর বর্তমান ক্ষেত্র প্রস্থ এবং উচ্চতায় সীমাবদ্ধ থাকবে। ভিউ এর ক্ষেত্র নির্ধারণ করা না গেলে ব্যবহারকারীরা ব্যবহার করার জন্য সীমাবদ্ধতা প্রদান করতে পারে। অন্যথায়, ভিউ প্রস্থ এবং উচ্চতা মানগুলির ডিফল্ট ক্ষেত্র ব্যবহার করা হয়।
  • যোগ করা হয়েছে SpatialExternalSurface , যা স্টেরিওস্কোপিক বিষয়বস্তু রেন্ডার করতে ব্যবহার করা যেতে পারে। SpatialExternalSurface মডিফায়ার (আলফা বাদে) এবং একটি প্রান্ত পালক প্রভাব সহ কাস্টমাইজযোগ্য।
  • একটি নতুন pointerHoverIcon সাবস্পেস মডিফায়ার যোগ করা হয়েছে যা ব্যবহারকারীদের স্থানিক পয়েন্টারের জন্য আইকন সেট করতে দেয়।

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

  • সমস্ত Jetpack XR প্যাকেজের উপর RequiresApi(34) সীমাবদ্ধতা সরানো হয়েছে। এই বিধিনিষেধটি অপ্রয়োজনীয় ছিল কারণ Jetpack XR বর্তমানে শুধুমাত্র API স্তর 34+ সহ ডিভাইসগুলিতে উপলব্ধ। ( Iae0f8 )
  • Kotlin 2.0 এর সাথে মুক্তিপ্রাপ্ত প্রকল্পগুলির জন্য KGP 2.0.0 বা নতুন ব্যবহার করা প্রয়োজন। ( আইডিবি৬বি৫ )
  • ব্যাক হ্যান্ডলিং এখন এমবেডেড ক্রিয়াকলাপ ছাড়াই স্থানিক প্যানেলে কাজ করবে। ব্যাক হ্যান্ডলিং কাজ করার জন্য আপনাকে অ্যান্ড্রয়েড ম্যানিফেস্টে android:enableOnBackInvokedCallback="true" নির্দিষ্ট করতে হবে।
  • ব্যাকহ্যান্ডলিং এখন স্থানিক ডায়ালগে কাজ করবে। ব্যাকহ্যান্ডলিং কাজ করার জন্য আপনাকে অ্যান্ড্রয়েড ম্যানিফেস্টে android:enableOnBackInvokedCallback="true" নির্দিষ্ট করতে হবে।
  • রচনা-ভিত্তিক এবং ভিউ-ভিত্তিক SpatialPanel প্যানেলগুলি এখন তাদের বিষয়বস্তুর উপর ভিত্তি করে নিজেদের আকার দিতে পারে৷
  • বিকাশকারীরা এখন তাদের নিজস্ব কাস্টম SpatialElevationLevel মান সেট করতে পারে এবং পূর্বনির্ধারিত স্তরের মধ্যে সীমাবদ্ধ নয়।
  • অরবিটার এলিভেশন লেভেল এখন elevation প্যারামিটারের মাধ্যমে কাস্টমাইজ করা যেতে পারে।
  • সাবস্পেস এখন ডিফল্টরূপে প্রস্থ এবং উচ্চতায় SpatialUser এর দৃশ্য ক্ষেত্র দ্বারা সীমাবদ্ধ করা যেতে পারে। যদি দৃশ্যের ক্ষেত্র নির্ধারণ করা না যায়, তাহলে দৃশ্যের প্রস্থ এবং উচ্চতার মানগুলির ডিফল্ট ক্ষেত্র ব্যবহার করা হয়।
  • Movable মডিফায়ারে onMoveStart এবং onMoveEnd নতুন কলব্যাক যোগ করা হয়েছে। onMoveStart এবং onMoveEnd কলব্যাকগুলিকে বলা হয় যখন ব্যবহারকারী অস্থাবর পরিবর্তনকারীর সাহায্যে সংমিশ্রণযোগ্য একটি সাবস্পেস সরানো শুরু করে এবং শেষ করে।
  • name প্যারামিটারটি স্থানিক API যেমন SpatialRow এবং SpatialPanel থেকে সরানো হয়েছে। স্থানিক রচনা গাছ ডিবাগ করার জন্য এর পরিবর্তে SubspaceModifier.testTag ব্যবহার করুন।
  • SpatialPopup এর একটি অসমর্থিত ওভারলোড সরানো হয়েছে যেটিতে শুধুমাত্র spatialElevationLevel এবং content রয়েছে। অনুগ্রহ করে এমন ইন্টারফেস ব্যবহার করুন যা onDimissRequest সমর্থন করে।
  • Movable modifier থেকে onPoseChange কলব্যাকটি সরানো হয়েছে। পরিবর্তে onMove ব্যবহার করুন।
  • SubspaceModifiers তাদের প্রভাব আর প্রয়োগ করবে না যদি তারা বিচ্ছিন্ন বা বর্তমানে বিচ্ছিন্ন হয়।
  • বিদ্যমান SpatialRow API কে SpatialRow এবং SpatialCurvedRow এ বিভক্ত করা হয়েছে। যদি আগে SpatialRow এর curveRadius প্যারামিটার ব্যবহার করে থাকেন, তাহলে এখন SpatialCurvedRow ব্যবহার করুন যা একই আচরণের প্রস্তাব দেয়।
  • একইভাবে সাম্প্রতিক সিস্টেম ইমেজে চালানো হলে MainPanel এবং ActivityPanel আর টাইটেল বার থাকে না।
  • আলফা এবং স্কেল মডিফায়ারগুলি এখন স্ট্যাকযোগ্য এবং চূড়ান্ত প্রয়োগ করা আলফা বা স্কেল মানের জন্য তাদের মানগুলিকে গুণ করবে।
  • Movable modifier থেকে onPoseChange কলব্যাকটি মসৃণ পোজ মুভমেন্ট করার জন্য অপ্টিমাইজ করা হয়েছে।
  • চলমান এবং পরিবর্তনযোগ্য পরিবর্তনকারীরা এখন মূল থ্রেডে তাদের কলব্যাকগুলি সম্পাদন করবে যাতে নিশ্চিত করা যায় যে রাজ্যের পরিবর্তনগুলি পুনর্গঠনকে ট্রিগার করবে।
  • SubspaceLayout লেআউটে রাজ্যের পরিবর্তনগুলি রিলেআউটকে ট্রিগার করবে তা নিশ্চিত করতে লেআউটে রাজ্য পর্যবেক্ষণ এবং পরিমাপ পর্যায়গুলি যোগ করা হয়েছে।
  • বিদ্যমান সংশোধকগুলিকে আরও ভালভাবে ব্যবহার করার জন্য অপ্টিমাইজ করা মডিফায়ার চেইন আপডেট।

বাগ ফিক্স

  • যখন একটি SpatialDialog দেখানো হয় তখন স্ক্রিমিং বন্ধ করা হয়। ( IC4594 )
  • সংশোধক নোডগুলি বিচ্ছিন্ন থাকার সময় করা রিলেআউট অনুরোধগুলি এখন উপেক্ষা করা হবে।
  • সরানো রিলেআউট পর্যায়গুলি চলমান এবং পরিবর্তনযোগ্য সংশোধক দ্বারা ট্রিগার করা হয়েছে৷
  • MainPanel() কম্পোজেবলে একটি ক্র্যাশ স্থির করা হয়েছে যেটি ঘটে যখন হয় ডাইমেনশন শূন্যে সেট করা হয়, হয় সরাসরি বা লেআউট গণনার সময়, যেমন, একটি SpatialRow/SpatialColumn গণনা। প্যানেলটি এখন এর পরিবর্তে লুকানো হবে। মনে রাখবেন যে এই ফিক্সটি লেআউট পর্বের সময় ক্র্যাশগুলিকে বিশেষভাবে সম্বোধন করে; ব্যবহারকারী ইন্টারঅ্যাকশনের মাধ্যমে প্যানেলের আকার শূন্যে পরিবর্তন করা আলাদাভাবে পরিচালনা করা হবে। লুকানো প্যানেলে UI সুবিধার অভাব রয়েছে।
  • পরিবর্তনযোগ্য সংশোধক থেকে maintainAspectRatio সাথে সমস্যা সমাধান করা হয়েছে। আকৃতির অনুপাত এখন রাখতে হবে।
  • নেস্টেড সাবস্পেসগুলির সাথে একটি সমস্যা সমাধান করা হয়েছে যেখানে তারা একটি একক ফ্রেমের জন্য ভুলভাবে অবস্থান করবে৷
  • স্থির সমস্যা যেখানে বৃত্তাকার কোণগুলি কখনও কখনও প্রয়োগ করা হয় না যখন সেগুলি থাকা উচিত৷
  • NestedSubspaces ভুল অবস্থানে একটি ফ্রেমের জন্য আর প্রদর্শিত হবে না৷

সংস্করণ 1.0.0-alpha03

ফেব্রুয়ারী 26, 2025

androidx.xr.compose:compose:1.0.0-alpha03 এবং androidx.xr.compose:compose-testing:1.0.0-alpha03 শেষ আলফা থেকে কোনো উল্লেখযোগ্য পরিবর্তন ছাড়াই প্রকাশ করা হয়েছে। সংস্করণ 1.0.0-alpha03 এই কমিট ধারণ করে

সংস্করণ 1.0.0-alpha02

ফেব্রুয়ারি 12, 2025

androidx.xr.compose:compose:1.0.0-alpha02 এবং androidx.xr.compose:compose-testing:1.0.0-alpha02 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha02-এ এই কমিট রয়েছে।

নতুন বৈশিষ্ট্য

  • একটি স্থানিক ডায়ালগ সক্রিয় করা হলে অ্যাক্টিভিটি প্যানেল এখন তার বিষয়বস্তু স্ক্রিম করতে পারে।
  • Orbiter API এখন SubspaceComposable প্রসঙ্গে ব্যবহারযোগ্য এবং অরবিটারকে তাদের নিকটতম SubspaceLayout -ভিত্তিক কম্পোজেবল প্যারেন্টের সাথে সংযুক্ত করবে।
  • কাস্টম পজিশনিং-ভিত্তিক মডিফায়ারকে অনুমতি দিতে LayoutCoordinatesAwareModifierNode প্রবর্তন করা হয়েছে।
  • SubspaceModifier.Node এ সংযুক্ত/বিচ্ছিন্ন জীবনচক্র পদ্ধতি যোগ করা হয়েছে।
  • চলমান পরিবর্তনকারীতে scaleWithDistance যোগ করা হয়েছে। যখন scaleWithDistance সক্ষম করা হয়, স্থানান্তরিত সাবস্পেস উপাদানটি বৃদ্ধি পাবে বা সঙ্কুচিত হবে। এটি আন্দোলনের আগে যে কোনও সুস্পষ্ট স্কেল বজায় রাখবে।

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

  • SpatialCapabilities পক্ষে SessionCallbackProvider সরানো হয়েছে।

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

  • minSDK কমিয়ে 24 করা হয়েছে। সমস্ত Jetpack XR API-এর জন্য রানটাইমে API 34 এর প্রয়োজন অব্যাহত রয়েছে।
  • Orbiter EdgeOffset.inner , EdgeOffset.outer , এবং EdgeOffset.overlap কনস্ট্রাক্টরগুলি আর @Composable পদ্ধতি নয়, যা তাদেরকে অ-কম্পোজযোগ্য প্রেক্ষাপটে ব্যবহার করার অনুমতি দেয়।
  • সর্বশেষ UX স্পেকের সাথে মেলে স্থানিক উচ্চতা স্তর আপডেট করুন।
  • MeasurableLayoutSubspaceSemanticsInfo ইন্টারফেস প্রয়োগ করুন।
  • SubspaceModifierElementSubspaceModifierNodeElement নামকরণ করা হয়েছে।

বাগ ফিক্স

  • SubspaceModifier ক্রম স্থির করার জন্য সংশোধন করা হয়েছে। SubspaceModifier আরও নির্ভরযোগ্যভাবে আচরণ করা উচিত। অফসেট, ঘোরানো, স্কেল, চলমান, এবং পরিবর্তনযোগ্য পরিবর্তনকারী এখন যেকোনো ক্রমে ব্যবহারযোগ্য হওয়া উচিত।

সংস্করণ 1.0.0-alpha01

ডিসেম্বর 12, 2024

androidx.xr.compose:compose-*1.0.0-alpha01 প্রকাশিত হয়েছে।

প্রাথমিক রিলিজের বৈশিষ্ট্য

  • XR-এর জন্য জেটপ্যাক কম্পোজের প্রাথমিক বিকাশকারী প্রকাশ। XR-এ স্থানিক UI লেআউট তৈরি করতে সারি এবং কলামগুলির মতো পরিচিত রচনা ধারণাগুলি ব্যবহার করুন, আপনি XR-এ একটি বিদ্যমান 2D অ্যাপ পোর্ট করছেন বা স্ক্র্যাচ থেকে একটি নতুন XR অ্যাপ তৈরি করছেন। এই লাইব্রেরিটি সাবস্পেস এবং স্থানিক কম্পোজেবল সরবরাহ করে: যেমন স্থানিক প্যানেল এবং অরবিটার, যা আপনাকে আপনার বিদ্যমান 2D রচনা বা ভিউ-ভিত্তিক UI একটি স্থানিক বিন্যাসে রাখতে দেয়। এটি ভলিউম সাবস্পেস কম্পোজেবল প্রবর্তন করে, যা আপনাকে আপনার UI এর সাথে সম্পর্কিত 3D মডেলের মতো SceneCore সত্তা স্থাপন করতে দেয়। এই বিকাশকারী গাইডে আরও জানুন:

    • Subspace : এই সংমিশ্রণযোগ্যটিকে আপনার অ্যাপের UI অনুক্রমের মধ্যে যে কোনও জায়গায় স্থাপন করা যেতে পারে, যা আপনাকে ফাইলগুলির মধ্যে প্রসঙ্গ না হারিয়ে 2D এবং স্থানিক UI এর জন্য লেআউটগুলি বজায় রাখতে দেয়৷ এটি আপনার পুরো UI ট্রির মাধ্যমে স্টেট উত্তোলনের প্রয়োজন ছাড়াই XR এবং অন্যান্য ফর্ম ফ্যাক্টরগুলির মধ্যে বিদ্যমান অ্যাপ আর্কিটেকচারের মতো জিনিসগুলিকে ভাগ করা সহজ করে তোলে বা আপনার অ্যাপকে পুনরায় আর্কিটেক্ট করার প্রয়োজন নেই৷

    • স্থানিক প্যানেল : একটি স্থানিক প্যানেল হল একটি সাবস্পেস কম্পোজেবল যা আপনাকে অ্যাপের সামগ্রী প্রদর্শন করতে দেয়-উদাহরণস্বরূপ, আপনি একটি স্থানিক প্যানেলে ভিডিও প্লেব্যাক, স্থির চিত্র বা অন্য কোনো সামগ্রী প্রদর্শন করতে পারেন।

    • অরবিটার : একটি অরবিটার হল একটি স্থানিক UI উপাদান। এটি একটি সংশ্লিষ্ট স্থানিক প্যানেলের সাথে সংযুক্ত করার জন্য ডিজাইন করা হয়েছে এবং এতে সেই স্থানিক প্যানেলের সাথে সম্পর্কিত নেভিগেশন এবং প্রাসঙ্গিক অ্যাকশন আইটেম রয়েছে৷ উদাহরণস্বরূপ, আপনি যদি ভিডিও সামগ্রী প্রদর্শনের জন্য একটি স্থানিক প্যানেল তৈরি করে থাকেন, তাহলে আপনি একটি অরবিটারের ভিতরে ভিডিও প্লেব্যাক নিয়ন্ত্রণ যোগ করতে পারেন।

    • ভলিউম : আপনার UI-এর সাথে সম্পর্কিত 3D মডেলের মতো SceneCore সত্তা রাখুন।

  • স্থানিক বিন্যাস: আপনি একাধিক স্থানিক প্যানেল তৈরি করতে পারেন এবং SpatialRow , SpatialColumn , SpatialBox , এবং SpatialLayoutSpacer ব্যবহার করে একটি স্থানিক বিন্যাসের মধ্যে রাখতে পারেন। আপনার লেআউট কাস্টমাইজ করতে SubspaceModifier s ব্যবহার করুন।

  • স্থানিক UI উপাদানগুলি: এই উপাদানগুলি আপনার 2D UI এ পুনরায় ব্যবহার করা যেতে পারে এবং স্থানিক ক্ষমতাগুলি সক্ষম হলেই তাদের স্থানিক বৈশিষ্ট্যগুলি দৃশ্যমান হবে৷

    • SpatialDialog : প্যানেল একটি উন্নত ডায়ালগ প্রদর্শন করতে z-গভীরতায় কিছুটা পিছনে ঠেলে দেবে।
    • SpatialPopUp : প্যানেল একটি উন্নত পপআপ প্রদর্শন করতে z-গভীরতায় কিছুটা পিছনে ঠেলে দেবে
    • SpatialElevation : SpatialElevationLevel উচ্চতা যোগ করার জন্য সেট করা যেতে পারে।
  • স্থানিক সক্ষমতা: ব্যবহারকারীরা আপনার অ্যাপ বা সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার সাথে সাথে স্থানিক ক্ষমতাগুলি পরিবর্তিত হতে পারে, অথবা এমনকি আপনার অ্যাপের দ্বারাও পরিবর্তন করা যেতে পারে—উদাহরণস্বরূপ, হোম স্পেস বা পূর্ণ স্থানে চলে যাওয়া। সমস্যাগুলি এড়াতে, বর্তমান পরিবেশে কোন APIগুলি সমর্থিত তা নির্ধারণ করতে আপনার অ্যাপটিকে LocalSpatialCapabilities.current পরীক্ষা করতে হবে৷ isSpatialUiEnabled : Spatial UI উপাদান (যেমন SpatialPanel) isContent3dEnabled : 3D অবজেক্ট isAppEnvironmentEnabled : পরিবেশ isPassthroughControlEnabled : অ্যাপ্লিকেশনটি পাসথ্রু অবস্থা নিয়ন্ত্রণ করতে পারে কিনা তা স্থানিক অডিও isSpatialAudioEnabled : SpatialAudioEnabled

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

  • বর্তমানে XR-এর জন্য Jetpack Compose ব্যবহার করতে 30-এর একটি minSDK প্রয়োজন৷ একটি সমাধান হিসাবে আপনি 23 এর একটি minSDK তৈরি করতে এবং চালাতে সক্ষম হতে নিম্নলিখিত ম্যানিফেস্ট এন্ট্রি <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> যোগ করতে পারেন।
  • Jetpack XR অ্যাপগুলির জন্য বর্তমানে AndroidManifest-এ android.permission.SCENE_UNDERSTANDING অনুমতির অনুরোধ করতে হবে।
  • একটি অ্যাপ যখন তাদের ম্যানিফেস্টে PROPERTY_XR_ACTIVITY_START_MODE প্রপার্টি ব্যবহার করে সরাসরি ফুল স্পেসে লঞ্চ হয়, তখন পূর্ণ স্পেসে রূপান্তর করার আগে অ্যাক্টিভিটি/অ্যাপ্লিকেশন প্রাথমিকভাবে হোম স্পেসে খোলা হয়।
  • ভলিউম কম্পোজেবলের glTFগুলি প্রাথমিকভাবে ভুল অবস্থানে ঝাঁকুনি দিতে পারে।
  • উল্লেখযোগ্যভাবে সরানো হয়েছে এমন একটি প্যানেলে একটি স্থানিক ডায়ালগ ব্যবহার করা বিষয়বস্তুটিকে ভুল দিকে ঠেলে দেবে৷