ব্যাকগ্রাউন্ডে যোগাযোগ করা

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

এইসব ব্যবহারের ক্ষেত্রে সাহায্য করার জন্য একাধিক বিকল্প আছে। প্রতিটিরই সুবিধা ও অসুবিধা আছে, যার ফলে আপনার নির্দিষ্ট প্রয়োজনের জন্য সেটি কম বা বেশি উপযুক্ত হতে পারে।

নিচের ডায়াগ্রামে এই পৃষ্ঠার নির্দেশিকার একটি সরলীকৃত ভিউ দেখানো হয়েছে:

ডিভাইস খুঁজুন

প্রথমে, আপনার অ্যাপকে কানেক্ট করার জন্য একটি ডিভাইস খুঁজতে হবে। BLE ডিভাইস খুঁজতে আপনি নিম্নলিখিত API-এর মধ্যে যেকোনও একটি ব্যবহার করতে পারেন:

ব্যাকগ্রাউন্ডে

অ্যাপ দেখা না গেলেও, এই API-এর যেকোনও একটি ব্যবহার করার ক্ষেত্রে কোনও সীমাবদ্ধতা নেই, তবে আপনার অ্যাপ প্রসেস চালু থাকতে হবে। অ্যাপ প্রসেস চালু না থাকলে, আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করতে পারেন:

কোনও ডিভাইসে কানেক্ট করুন:

আপনি কোনও ডিভাইস খুঁজে পাওয়ার পরে সেটির সাথে কানেক্ট করতে, আপনাকে নিম্নলিখিত সোর্সগুলির মধ্যে কোনও একটি থেকে ডিভাইসের জন্য একটি BluetoothDevice ইনস্ট্যান্স পেতে হবে:

আপনার কাছে BluetoothDevice ইনস্ট্যান্স থাকলে, আপনি সংশ্লিষ্ট ডিভাইসে কানেকশন অনুরোধ শুরু করতে পারেন। এর জন্য আপনাকে connectGatt() পদ্ধতিগুলির মধ্যে একটি কল করতে হবে। autoConnect বুলিয়ানে আপনি যে মান পাস করেন তা নির্ধারণ করে যে GATT ক্লায়েন্ট নিম্নলিখিত দুটি কানেকশন মোডের মধ্যে কোনটি ব্যবহার করে:

  • সরাসরি কানেক্ট করা (autoconnect = false): পেরিফেরাল ডিভাইসের সাথে সরাসরি কানেক্ট করার চেষ্টা করুন এবং ডিভাইস উপলভ্য না থাকলে কানেক্ট করা যাবে না। কানেকশন বিচ্ছিন্ন হয়ে গেলে, GATT ক্লায়েন্ট অটোমেটিক আবার কানেক্ট করার চেষ্টা করে না।
  • অটোমেটিক কানেক্ট করুন (autoconnect = true): পেরিফেরাল ডিভাইস উপলভ্য হলেই অটোমেটিক কানেক্ট করার চেষ্টা করুন। পেরিফেরাল ডিসকানেক্ট করলে বা পেরিফেরাল রেঞ্জের বাইরে চলে গেলে, পেরিফেরাল উপলভ্য হলে GATT ক্লায়েন্ট অটোমেটিক আবার কানেক্ট করার চেষ্টা করে।

ব্যাকগ্রাউন্ডে

অ্যাপ ব্যাকগ্রাউন্ডে চলাকালীন ডিভাইসের সাথে কানেক্ট করার ক্ষেত্রে কোনও বিধিনিষেধ নেই, তবে আপনার প্রসেস বন্ধ হয়ে গেলে কানেকশনও বন্ধ হয়ে যায়। এছাড়াও, ব্যাকগ্রাউন্ড থেকে অ্যাক্টিভিটি শুরু করার ক্ষেত্রে বিধিনিষেধ (Android 10 ও তার পরবর্তী ভার্সনে) বা ফোরগ্রাউন্ড পরিষেবা (Android 12 ও তার পরবর্তী ভার্সনে) আছে।

তাই, ব্যাকগ্রাউন্ডে কানেকশন পারফর্ম করতে, অ্যাপ নিম্নলিখিত সমাধান ব্যবহার করতে পারে:

কোনও ডিভাইসের সাথে কানেক্টেড থাকুন

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

উভয় ক্ষেত্রেই, নিম্নলিখিত বিকল্পগুলি উপলভ্য:

অ্যাপের মধ্যে পরিবর্তন করার সময়

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

পেরিফেরাল বিজ্ঞপ্তি শোনার সময়

পেরিফেরাল বিজ্ঞপ্তি শুনতে অ্যাপটিকে অবশ্যই setCharacteristicNotification() কল করতে হবে, onCharacteristicChanged() ব্যবহার করে কলব্যাক শুনতে হবে এবং কানেকশন চালু রাখতে হবে। বেশিরভাগ অ্যাপের ক্ষেত্রে, CompanionDeviceService-এর সাথে এই ব্যবহারের কেসটি সমর্থন করা সবচেয়ে ভালো কারণ অ্যাপটিকে সম্ভবত দীর্ঘ সময়ের জন্য শোনা চালিয়ে যেতে হবে। তবে, আপনি ফোরগ্রাউন্ড সার্ভিসও ব্যবহার করতে পারেন।

উভয় ক্ষেত্রেই, কোনও প্রসেস বন্ধ হয়ে যাওয়ার পরে আপনি কোনও ডিভাইসে কানেক্ট করুন বিভাগে দেওয়া নির্দেশাবলী অনুসরণ করে আবার কানেক্ট করতে পারবেন।