ব্যবহারকারী যখন তার দৈনন্দিন কাজকর্ম করেন, তখন তার এআই গ্লাস হোস্ট ডিভাইসের (যেমন ব্যবহারকারীর ফোন) সাথে সংযোগ হারাতে পারে, অথবা গ্লাসটি খুলে রাখলে তা সাময়িকভাবে অনুপলব্ধ হয়ে যেতে পারে। ডিভাইসের প্রাপ্যতার এই ধরনের পরিবর্তনগুলো সামাল দেওয়ার জন্য, আপনার অ্যাপ XR ডিভাইস অ্যাভেইলেবিলিটি এপিআই (XR Device Availability API) ব্যবহার করতে পারে, যা ডিভাইসের প্রাপ্যতার সংকেতগুলোকে সাধারণ অ্যান্ড্রয়েড Lifecycle.State (Android Lifecycle.State) ভ্যালুগুলোর সাথে একীভূত করে। অডিও রাউটিং ও হটওয়ার্ড অ্যাক্টিভেশন পরিচালনা করতে এবং এআই গ্লাস কখন উপলব্ধ হচ্ছে তার উপর ভিত্তি করে ব্যবহারকারীর ইনপুট কখন আশা করা যায়, তা জানতে এই এপিআই ব্যবহার করুন।
জীবনচক্রের অবস্থাগুলো বুঝুন
নিম্নলিখিত সারণিতে দেখানো হয়েছে কিভাবে ডিভাইস উপলব্ধতার সংকেতগুলো Lifecycle.State মানগুলোর সাথে সম্পর্কিত।
জীবনচক্র অবস্থা | ডিভাইসের অবস্থা | বর্ণনা |
|---|---|---|
| তৈরি করা হয়েছে | লাইফসাইকেল অবজেক্টটি তৈরি হয়েছে কিন্তু এখনও পর্যবেক্ষণ করা হয়নি। |
| নিষ্ক্রিয় | পরিষেবাটি সংযুক্ত আছে, কিন্তু ব্যবহারকারী ডিভাইসটি পরিধান করেননি। |
| সক্রিয় | ব্যবহারকারী ডিভাইসটি পরিধান করে আছেন। |
| বিচ্ছিন্ন | ডিভাইসটির সংযোগ বিচ্ছিন্ন হয়ে গেছে অথবা পরিষেবা সংযোগটি বিচ্ছিন্ন হয়ে গেছে। |
ডিভাইসের প্রাপ্যতা পরীক্ষা ও পর্যবেক্ষণ করুন
একটি ডিভাইসের প্রাপ্যতা পরীক্ষা ও নিরীক্ষণ করতে, আপনার অ্যাপ প্রতিটি পরিস্থিতি কীভাবে সামলাবে তা নির্ধারণ করার জন্য আপনি লাইফসাইকেল স্টেটের সাথে একটি প্রোজেক্টেড কনটেক্সট ব্যবহার করবেন:
// In your phone activity or service, check for projected device connection state before // attempting to create a projected device context and get the device lifecycle. ProjectedContext.isProjectedDeviceConnected(context, currentCoroutineContext()) .flatMapLatest { isConnected -> if (isConnected) { try { // Create the projected device context on connection val projectedContext = ProjectedContext.createProjectedDeviceContext(context) val xrDevice = XrDevice.getCurrentDevice(projectedContext) // Get the device lifecycle xrDevice.getLifecycle().currentStateFlow } catch (e: IllegalStateException) { flowOf(Lifecycle.State.DESTROYED) } } else { flowOf(Lifecycle.State.DESTROYED) } } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is available (worn) */ } Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ } Lifecycle.State.DESTROYED -> { /* Device is disconnected from host phone */ } else -> { /* Handle other states */ } } } }
কোড সম্পর্কে মূল বিষয়গুলো
- সংযোগ যাচাই করুন : ডিভাইস লাইফসাইকেল অ্যাক্সেস করার আগে, প্রজেক্টেড ডিভাইসটি হোস্ট ডিভাইসের সাথে সংযুক্ত আছে কিনা তা যাচাই করতে
ProjectedContext.isProjectedDeviceConnectedকল করুন। - একটি
ProjectedContextসংগ্রহ করুন : সংযোগ যাচাই করার পরেই কেবলProjectedContext.createProjectedDeviceContextকল করুন, এবং নিশ্চিত করুন যে আপনি এই কনটেক্সটটি আপনারXrDeviceইনস্ট্যান্সে পাস করছেন। - কন্টেক্সট অবৈধ হওয়া সামলানো : প্রতিবার একটি প্রজেক্টেড ডিভাইস সংযুক্ত হলে একটি নতুন
deviceIdতৈরি হয়। স্টেটটিDESTROYEDপৌঁছালে, বর্তমানProjectedContextঅবৈধ হয়ে যায়। অবিলম্বে এটি ব্যবহার করা বন্ধ করুন এবং একটি নতুন সংযোগের জন্য অপেক্ষা করুন। - ব্যাটারি এবং রিসোর্স অপ্টিমাইজ করুন : সিস্টেম রিসোর্স সংরক্ষণ করতে এবং ব্যাটারির ব্যবহার কমাতে লাইফসাইকেল স্টেটের উপর ভিত্তি করে অ্যাপের কার্যকারিতা সুষ্ঠুভাবে পরিচালনা করুন। উদাহরণস্বরূপ, যখন স্টেট
STARTEDথেকেCREATEDপরিবর্তিত হয়, তখন আপনার চশমা-নির্দিষ্ট রিসোর্স, যেমন ক্যামেরা ডেটা স্ট্রিম, রিলিজ করা উচিত।CREATEDস্টেট নির্দেশ করে যে ডিভাইসটি আর ব্যবহার করা হচ্ছে না, তাই অপ্রয়োজনীয় ব্যাটারি খরচ রোধ করতে এবং ব্যবহারকারীর গোপনীয়তা রক্ষা করতে এই প্রসেসগুলো বন্ধ করা অপরিহার্য।