স্পেশিয়াল ক্ষমতা আছে কিনা চেক করা

প্রযোজ্য XR ডিভাইস
এইসব XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে এই নির্দেশিকা আপনাকে সাহায্য করে।
XR হেডসেট
ওয়্যারড XR গ্লাস

বিভিন্ন ডিভাইসে স্পেশিয়াল ক্ষমতা আলাদা আলাদা হতে পারে এবং ব্যবহারকারীরা আপনার অ্যাপ বা সিস্টেমের সাথে ইন্টার‍্যাক্ট করার সাথে সাথে তা পরিবর্তিত হতে পারে। এমনকি আপনার অ্যাপের মাধ্যমেও সেগুলি পরিবর্তন করা যেতে পারে—যেমন, হোম স্পেস বা সম্পূর্ণ স্পেসে সরানো। সমস্যা এড়াতে, কোন API বর্তমান এনভায়রনমেন্টে কাজ করে তা নির্ধারণ করতে আপনার অ্যাপকে স্পেশিয়াল ক্যাপাবিলিটি চেক করতে হবে।

XR-এর জন্য Jetpack Compose ব্যবহার করে স্পেশিয়াল ক্যাপাবিলিটি চেক করা

XR-এর জন্য Jetpack Compose স্পেশিয়াল ক্ষমতা চেক করার জন্য কম্পোজিশন লোকাল তৈরি করে। স্পেশিয়াল UI, স্পেশিয়াল অডিও, এনভায়রনমেন্ট, পাসথ্রু বা 3D কন্টেন্ট চালু আছে কিনা তা চেক করতে এটি ব্যবহার করুন।

নিম্নলিখিত স্পেশিয়াল ক্ষমতা বর্তমানে উপলভ্য আছে কিনা তা চেক করতে আপনি LocalSpatialCapabilities.current ব্যবহার করতে পারবেন:

  • isSpatialUiEnabled: অ্যাপ্লিকেশন স্পেশিয়াল UI এলিমেন্ট (যেমন, SpatialPanel) তৈরি করতে পারে কিনা তা নির্দেশ করে।
  • isContent3dEnabled: অ্যাপ্লিকেশনটি 3D অবজেক্ট তৈরি করতে পারে কিনা তা নির্দেশ করে।
  • isAppEnvironmentEnabled: অ্যাপ্লিকেশনটি এনভায়রনমেন্ট সেট করতে পারে কিনা তা নির্দেশ করে।
  • isPassthroughControlEnabled: এর মাধ্যমে বোঝা যায় যে অ্যাপ্লিকেশনটি পাসথ্রু স্টেট কন্ট্রোল করতে পারে কিনা।
  • isSpatialAudioEnabled: অ্যাপ্লিকেশন স্পেশিয়াল অডিও ব্যবহার করতে পারে কিনা তা বোঝায়।

নিম্নলিখিত উদাহরণ থেকে কীভাবে স্পেশিয়াল UI চালু আছে কিনা তা চেক করতে হয় তা জানুন:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

SceneCore ব্যবহার করে স্পেশিয়াল ক্ষমতা চেক করা

SceneCore লাইব্রেরি ব্যবহার করার সময়, আপনাকে একটি সেশন তৈরি করতে হবে। সেশন তৈরি হয়ে গেলে, কোন কোন স্পেশিয়াল ক্যাপাবিলিটি বর্তমানে উপলভ্য তা কোয়েরি করতে, সেশনের scene থেকে spatialCapabilities ব্যবহার করুন।

  • SPATIAL_3D_CONTENT: অ্যাক্টিভিটি 3D কন্টেন্ট তৈরি করতে পারে।
  • APP_ENVIRONMENT: অ্যাক্টিভিটি নিজের এনভায়রনমেন্ট সেট করতে পারে।
  • EMBED_ACTIVITY: অ্যাক্টিভিটি স্পেসের মধ্যে অন্য অ্যাক্টিভিটি এম্বেড করতে পারে।
  • PASSTHROUGH_CONTROL: এই অ্যাক্টিভিটি পাসথ্রু চালু বা বন্ধ করতে পারে।
  • SPATIAL_AUDIO: অ্যাক্টিভিটিতে স্পেশিয়াল অডিও ব্যবহার করা যেতে পারে।
  • SPATIAL_UI: অ্যাক্টিভিটি নিজেই স্প্যাশিয়ালাইজ করতে পারে (যেমন, স্পেশিয়াল প্যানেল যোগ করা)।

এছাড়াও, আপনি কলব্যাক সাবস্ক্রাইব করার বিকল্প বেছে নিতে পারেন, addSpatialCapabilitiesChangedListener যা স্পেশিয়াল ক্ষমতা পরিবর্তন হলে আপনাকে বিজ্ঞপ্তি পাঠায়।

// Example 1: check if enabling passthrough mode is allowed
if (xrSession.scene.spatialCapabilities.contains(
        SpatialCapability.PASSTHROUGH_CONTROL
    )
) {
    xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f
}
// Example 2: multiple capability flags can be checked simultaneously:
if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) &&
    xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)
) {
    // ...
}

ডিভাইসের ডিসপ্লে ক্ষমতা চেক করতে ব্লেন্ড মোড ব্যবহার করা

Android XR, XR হেডসেট ও ওয়্যারড XR গ্লাসে আলাদা আলাদা হার্ডওয়্যার ক্ষমতা থাকে, বিশেষ করে ডিসপ্লেয়ের ধরন সংক্রান্ত। দৃশ্যমানতা সর্বাধিক করতে, আপনাকে অ্যাপের UI ও রেন্ডার করা অবজেক্টের রং অ্যাডজাস্ট করতে হতে পারে, যা ডিসপ্লের ধরন ও ডিভাইসের ব্যবহার করা পছন্দসই ব্লেন্ড মোড দ্বারা প্রভাবিত হতে পারে। DisplayBlendMode API রেন্ডারিংয়ের জন্য ডিভাইসের ব্লেন্ড মোড ক্ষমতা প্রদান করে। বাস্তব জগতে কীভাবে ভার্চুয়াল কন্টেন্ট যোগ করা হয় তা নির্ধারণ করতে এই API ব্যবহার করুন।

এখানে কিছু ব্লেন্ড মোডের ধরন দেওয়া হল যা আপনার জানা উচিত:

  • ADDITIVE: লাল, সবুজ ও নীল কম্পোনেন্টের প্রতিটি ভ্যালু যোগ করে বাস্তব জগতে ভার্চুয়াল কন্টেন্ট যোগ করা হয়। আলফা উপেক্ষা করা হয় এবং কালো পিক্সেল ট্রান্সপারেন্ট হিসেবে দেখানো হয়।
  • ALPHA_BLEND: আলফা কম্পোনেন্টের উপর ভিত্তি করে পিক্সেল ভ্যালু আলফা ব্লেন্ড করার মাধ্যমে ভার্চুয়াল কন্টেন্ট বাস্তব জগতে যোগ করা হয়।
  • NO_DISPLAY: ডিভাইসে ব্লেন্ড করার সুবিধা কাজ করে না।

Jetpack XR রানটাইম লাইব্রেরি থেকে XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() ব্যবহার করে, কী ধরনের ব্লেন্ড মোড ব্যবহার করা হচ্ছে তা চেক করুন এবং প্রয়োজন অনুযায়ী অ্যাডজাস্টমেন্ট করুন।

এছাড়াও দেখুন