ডেটা লেয়ার API ব্যবহার করে নেটওয়ার্কে ডিভাইসগুলি আবিষ্কার করুন

ডিভাইসগুলো সরাসরি ওয়াই-ফাই বা সেলুলার সংযোগ ব্যবহার করে, অথবা পরোক্ষভাবে জোড়া লাগানো কোনো ব্লুটুথ ডিভাইসের মাধ্যমে ইন্টারনেটে সংযোগ স্থাপন করতে পারে।

পৌঁছানো যায় এবং কাছাকাছি নোড

একটি ডিভাইসকে তখনই যোগাযোগযোগ্য বলে গণ্য করা হয়, যখন সেটি অনলাইন থাকে এবং অন্য কোনো ডিভাইসের সাথে সরাসরি ব্লুটুথের মাধ্যমে অথবা পরোক্ষভাবে ক্লাউডকে মধ্যস্থতাকারী হিসেবে ব্যবহার করে যোগাযোগের জন্য উপলব্ধ থাকে।

কোনো ডিভাইসকে কাছাকাছি বলে গণ্য করা হয় যদি সেটিকে ক্লাউড ব্যবহার না করে সরাসরি ব্লুটুথের মাধ্যমে সংযুক্ত করা যায়।

যেসব কার্যকলাপ পুনঃসংযোগের সময়কে প্রভাবিত করে

কিছু নির্দিষ্ট পরিস্থিতিতে, ডিভাইসগুলির সংযোগ পুনরায় স্থাপন করতে ৪ মিনিট পর্যন্ত সময় লাগতে পারে। এই পরিস্থিতিগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত:

  • Wear OS ডিভাইসের নিষ্ক্রিয়তা: যদি কোনো Wear OS ডিভাইস ব্যবহারকারীর কবজি থেকে খুলে ফেলা হয় বা অন্য কোনো কারণে দীর্ঘ সময় ধরে সক্রিয়ভাবে ব্যবহার না করা হয়, তাহলে পুনরায় সংযোগের সময় বেড়ে যেতে পারে।
  • ডোজ স্টেট: একটি হ্যান্ডহেল্ড ডিভাইসের শক্তি-সাশ্রয়ী ডোজ স্টেট ব্যাকগ্রাউন্ড প্রসেসগুলোকে সীমিত করতে পারে, যার ফলে ডিভাইসটির পুনরায় সংযোগ স্থাপনের সময় বেড়ে যেতে পারে।
  • ব্যবহারকারীর মিথস্ক্রিয়া: যদি ব্যবহারকারী প্রায় একই সময়ে একটি হ্যান্ডহেল্ড ডিভাইস এবং একটি Wear OS ডিভাইস উভয়ের সাথেই মিথস্ক্রিয়া শুরু করেন, তবে এটি প্রায়শই পুনঃসংযোগ প্রক্রিয়াকে ত্বরান্বিত করে।

নোড ক্লায়েন্ট ব্যবহার করে সমস্ত ডিভাইস আবিষ্কার করুন

একটি NodeClient অবজেক্ট প্রতিটি ডিভাইসের সক্ষমতা নির্বিশেষে, একটি নেটওয়ার্কের সাথে সংযুক্ত অ্যান্ড্রয়েড-চালিত ডিভাইসগুলোর তালিকা শনাক্ত করে এবং সেগুলোতে বার্তা সম্প্রচার করে। একটি ডিভাইসের সমস্ত অ্যাপ এই ইভেন্ট নোটিফিকেশনগুলো পায়, যেমন নেটওয়ার্কে একটি নতুন ডিভাইসের যোগদান বা একটি বিদ্যমান ডিভাইসের অফলাইন হয়ে যাওয়া।

যেসব ডিভাইসে আপনার অ্যাপ ইনস্টল করা নেই, সেগুলো খুঁজে বের করার জন্য NodeClient ক্লাসটি বিশেষভাবে সহায়ক।

ডিভাইস সংযোগ এবং সংযোগ বিচ্ছিন্ন হওয়ার ইভেন্টগুলোর জন্য রেজিস্টার করতে, আপনি Horologist DataLayerAppHelper ক্লাসটি ব্যবহার করতে পারেন। এটি সংযোগের অবস্থা পর্যবেক্ষণ করার জন্য একটি connectedAndInstalledNodes Flow প্রদান করে। এছাড়াও, এর connectedNodes() মেথডটি NodeClient এবং CapabilityClient উভয়ের তথ্য একত্রিত করে একটি একক অবজেক্টে সংযুক্ত ডিভাইসগুলোর একটি তালিকা রিটার্ন করে।

একটি ক্যাপাবিলিটি ক্লায়েন্ট ব্যবহার করে নির্দিষ্ট ডিভাইসগুলি সনাক্ত করুন

একটি CapabilityClient অবজেক্ট Wear OS নেটওয়ার্কের কোন ডিভাইসগুলো নির্দিষ্ট অ্যাপ ক্যাপাবিলিটি সমর্থন করে, সে সম্পর্কে তথ্য প্রদান করে। ক্যাপাবিলিটি হলো এমন একটি বৈশিষ্ট্য যা একটি অ্যাপ হয় বিল্ড টাইমে সংজ্ঞায়িত করে অথবা রানটাইমে ডায়নামিকভাবে কনফিগার করে

উদাহরণস্বরূপ, একটি মোবাইল অ্যান্ড্রয়েড অ্যাপ বিজ্ঞাপন দিতে পারে যে এটি ভিডিও প্লেব্যাকের রিমোট কন্ট্রোল সমর্থন করে। সেই অ্যাপটির Wear OS সংস্করণটি CapabilityClient ব্যবহার করে পরীক্ষা করতে পারে যে, অ্যাপটির মোবাইল সংস্করণটি কাছাকাছি কোনো ডিভাইসে ইনস্টল করা আছে কি না এবং সেটি সেই ফিচারটি সমর্থন করে কি না। যদি তা করে, তাহলে Wear OS অ্যাপটি প্লে এবং পজ বাটন দেখাতে পারে, যাতে ব্যবহারকারীরা তাদের মোবাইল ডিভাইসে চলতে থাকা একটি ভিডিও তাদের Wear OS ডিভাইস থেকে নিয়ন্ত্রণ করতে পারেন। এই ক্যাপাবিলিটি ব্রডকাস্ট বিপরীত দিকেও কাজ করে; Wear OS অ্যাপগুলো তাদের সমর্থিত ক্যাপাবিলিটিগুলোর একটি তালিকা তৈরি করতে পারে।

আপনার অ্যাপের নতুন সক্ষমতাগুলো যাচাই করুন।

যে ডিভাইসের সাথে যোগাযোগ করতে হবে, তার নোড আইডি নির্ধারণ করতে CapabilityClient ব্যবহার করুন। উদাহরণস্বরূপ, হ্যান্ডহেল্ড ডিভাইসে আপনার অ্যাপের কোনো নতুন ফিচার আছে কিনা তা পরীক্ষা করার প্রয়োজন হলে, হ্যান্ডহেল্ড সাইডে সেই নতুন ফিচারের জন্য একটি ক্যাপাবিলিটি তৈরি করুন। এরপর আপনার Wear OS অ্যাপটি সেই ডিভাইসগুলোর জন্য কোয়েরি করতে পারবে যেগুলো ওই ক্যাপাবিলিটি সমর্থন করে। যদি সব ডিভাইসে ক্যাপাবিলিটিটি অনুপস্থিত থাকে, তার মানে হলো ব্যবহারকারীর কাছে আপনার অ্যাপের এমন কোনো সংস্করণ নেই যা এই ফিচারটি সমর্থন করে, যা আপনার অ্যাপের লজিকে সুন্দরভাবে সামাল দেওয়া উচিত। আপনি যদি ধরে নেন যে যোগাযোগের জন্য হ্যান্ডহেল্ড ডিভাইসটিই সর্বদা সঠিক নোড, তাহলে আপনার মেসেজগুলো ডেলিভারি নাও হতে পারে, কারণ ফোন অ্যাপটি সেই ফিচারটি সমর্থন করে না।

একটি Wear OS ডিভাইস নেটওয়ার্কে একমাত্র ডিভাইস কিনা তা নির্ধারণ করুন।

আশেপাশে অন্য কোনো অ্যান্ড্রয়েড-চালিত ডিভাইস না থাকায় আপনার অ্যাপটিকে স্ট্যান্ডঅ্যালোন মোডে চলতে হবে কিনা, তা পরীক্ষা করতে আপনি CapabilityClient ব্যবহার করতে পারেন। FILTER_ALL পাস করলে, ফলাফলে অন্য কোনো ডিভাইস প্রদর্শিত হবে না।