ব্লুটুথ ওভারভিউ

Android প্ল্যাটফর্মে ব্লুটুথ নেটওয়ার্ক স্ট্যাকের জন্য সহায়তা অন্তর্ভুক্ত থাকে, যা একটি ডিভাইসকে অন্যান্য ব্লুটুথ ডিভাইসের সাথে ওয়্যারলেসভাবে ডেটা আদান-প্রদান করার অনুমতি দেয়। অ্যাপ ফ্রেমওয়ার্ক, ব্লুটুথ API-এর মাধ্যমে ব্লুটুথ কার্যকারিতায় অ্যাক্সেস প্রদান করে। এইসব API অ্যাপকে অন্যান্য ব্লুটুথ ডিভাইসের সাথে কানেক্ট করতে দেয়, যার ফলে পয়েন্ট-টু-পয়েন্ট এবং মাল্টিপয়েন্ট ওয়্যারলেস ফিচার চালু হয়।

ব্লুটুথ API ব্যবহার করে, কোনও অ্যাপ নিম্নলিখিত কাজগুলি করতে পারে:

  • অন্যান্য ব্লুটুথ ডিভাইস স্ক্যান করুন।
  • পেয়ার করা ব্লুটুথ ডিভাইসের জন্য স্থানীয় ব্লুটুথ অ্যাডাপ্টার কোয়েরি করুন।
  • RFCOMM চ্যানেল তৈরি করুন।
  • পরিষেবা খোঁজার মাধ্যমে অন্যান্য ডিভাইসে কানেক্ট করুন।
  • অন্যান্য ডিভাইসে ডেটা ট্রান্সফার করা এবং অন্যান্য ডিভাইস থেকে ডেটা পাওয়া।
  • একাধিক কানেকশন ম্যানেজ করুন।

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

এই ডকুমেন্টেশনে বিভিন্ন ব্লুটুথ প্রোফাইল সম্পর্কে বর্ণনা করা হয়েছে এবং ব্লুটুথ ব্যবহার করে যোগাযোগ করার জন্য প্রয়োজনীয় চারটি প্রধান কাজ সম্পন্ন করতে কীভাবে ব্লুটুথ API ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে:

  • ব্লুটুথ সেট-আপ করা হচ্ছে।
  • স্থানীয় এলাকায় পেয়ার করা বা উপলভ্য ডিভাইস খোঁজা হচ্ছে।
  • ডিভাইস কানেক্ট করা হচ্ছে।
  • ডিভাইসের মধ্যে ডেটা ট্রান্সফার করা হচ্ছে।

ব্লুটুথ API ব্যবহারের ডেমো দেখতে, Bluetooth Chat স্যাম্পেল অ্যাপ দেখুন।

প্রাথমিক বিষয়

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

ব্লুটুথ API ব্যবহার করার জন্য আপনার ম্যানিফেস্ট ফাইলে একাধিক অনুমতি ঘোষণা করতে হবে। আপনার অ্যাপ ব্লুটুথ ব্যবহার করার অনুমতি পেলে, আপনার অ্যাপকে BluetoothAdapter অ্যাক্সেস করতে হবে এবং ডিভাইসে ব্লুটুথ উপলভ্য আছে কিনা তা নির্ধারণ করতে হবে। ব্লুটুথ উপলভ্য থাকলে, কানেকশন তৈরি করার জন্য তিনটি ধাপ রয়েছে:

কিছু ডিভাইস নির্দিষ্ট Bluetooth প্রোফাইল ব্যবহার করে যা এটি প্রদান করা ডেটা ঘোষণা করে।

মূল ক্লাস ও ইন্টারফেস

সব ব্লুটুথ API android.bluetooth প্যাকেজে উপলভ্য। ব্লুটুথ কানেকশন তৈরি করার জন্য আপনাকে নিম্নলিখিত ক্লাস ও ইন্টারফেস ব্যবহার করতে হবে:

BluetoothAdapter
লোকাল ব্লুটুথ অ্যাডাপ্টার (ব্লুটুথ রেডিও) দেখায়। BluetoothAdapter হল সব ব্লুটুথ ইন্টার‍্যাকশনের এন্ট্রি-পয়েন্ট। এটি ব্যবহার করে, আপনি অন্যান্য ব্লুটুথ ডিভাইস খুঁজতে, বন্ডেড (পেয়ার করা) ডিভাইসের তালিকা কোয়েরি করতে, পরিচিত MAC অ্যাড্রেস ব্যবহার করে BluetoothDevice ইনস্ট্যান্টিয়েট করতে এবং অন্যান্য ডিভাইস থেকে আসা কমিউনিকেশন শোনার জন্য BluetoothServerSocket তৈরি করতে পারবেন।
BluetoothDevice
রিমোট ব্লুটুথ ডিভাইসকে দেখায়। BluetoothSocket-এর মাধ্যমে রিমোট ডিভাইসের সাথে কানেকশনের অনুরোধ করতে অথবা ডিভাইসের নাম, ঠিকানা, ক্লাস ও বন্ডিং স্টেট সংক্রান্ত তথ্য কোয়েরি করতে এটি ব্যবহার করুন।
BluetoothSocket
ব্লুটুথ সকেটের (TCP Socket-এর মতো) ইন্টারফেস দেখায়। এটি হল কানেকশন পয়েন্ট যা InputStream এবং OutputStream ব্যবহার করে অন্য ব্লুটুথ ডিভাইসের সাথে ডেটা আদানপ্রদান করার জন্য অ্যাপকে অনুমতি দেয়।
BluetoothServerSocket
একটি ওপেন সার্ভার সকেটকে দেখায় যা ইনকামিং অনুরোধের জন্য অপেক্ষা করে (TCP ServerSocket-এর মতো)। দুটি ডিভাইস কানেক্ট করতে, একটি ডিভাইসকে অবশ্যই এই ক্লাসের সাথে একটি সার্ভার সকেট খুলতে হবে। কোনও রিমোট ব্লুটুথ ডিভাইস এই ডিভাইসে কানেকশনের অনুরোধ করলে, ডিভাইসটি কানেকশন গ্রহণ করে এবং তারপর কানেক্ট করা BluetoothSocket ফিরিয়ে দেয়।
BluetoothClass
ব্লুটুথ ডিভাইসের সাধারণ বৈশিষ্ট্য ও ক্ষমতার বিবরণ দেয়। এটি শুধুমাত্র পড়া যায় এমন প্রপার্টির সেট যা ডিভাইসের ক্লাস ও পরিষেবা নির্ধারণ করে। যদিও এই তথ্যটি ডিভাইসের ধরন সম্পর্কে একটি দরকারী ইঙ্গিত প্রদান করে, এই ক্লাসের অ্যাট্রিবিউটগুলি ডিভাইসের মাধ্যমে কাজ করে এমন সমস্ত ব্লুটুথ প্রোফাইল এবং পরিষেবাগুলি বর্ণনা করে না।
BluetoothProfile
একটি ইন্টারফেস যা ব্লুটুথ প্রোফাইলকে উপস্থাপন করে। ব্লুটুথ প্রোফাইল হল ডিভাইসের মধ্যে ব্লুটুথ-ভিত্তিক যোগাযোগের জন্য একটি ওয়্যারলেস ইন্টারফেস স্পেসিফিকেশন। হ্যান্ডস-ফ্রি প্রোফাইল হল এর একটি উদাহরণ। প্রোফাইল সম্পর্কে আরও আলোচনার জন্য, ব্লুটুথ প্রোফাইল দেখুন।
BluetoothHeadset
মোবাইল ফোনের সাথে ব্লুটুথ হেডসেট ব্যবহার করার জন্য সহায়তা প্রদান করে। এর মধ্যে ব্লুটুথ হেডসেট প্রোফাইল এবং হ্যান্ডস-ফ্রি (v1.5) প্রোফাইল, দুটিই অন্তর্ভুক্ত।
BluetoothA2dp
অ্যাডভান্সড অডিও ডিস্ট্রিবিউশন প্রোফাইল (A2DP) ব্যবহার করে ব্লুটুথ কানেকশনের মাধ্যমে একটি ডিভাইস থেকে অন্য ডিভাইসে কীভাবে খুব ভাল কোয়ালিটির অডিও স্ট্রিম করা যায় তা নির্ধারণ করে।
BluetoothHealth
হেলথ ডিভাইস প্রোফাইল প্রক্সি দেখায় যা ব্লুটুথ পরিষেবা নিয়ন্ত্রণ করে।
BluetoothHealthCallback
একটি অ্যাবস্ট্রাক্ট ক্লাস যা আপনি BluetoothHealth কলব্যাক প্রয়োগ করতে ব্যবহার করেন। অ্যাপের রেজিস্ট্রেশন স্ট্যাটাস ও ব্লুটুথ চ্যানেল স্ট্যাটাসে পরিবর্তন সম্পর্কে আপডেট পেতে, আপনাকে এই ক্লাসটি এক্সটেন্ড করতে হবে এবং কলব্যাক পদ্ধতি প্রয়োগ করতে হবে।
BluetoothHealthAppConfiguration
অ্যাপ কনফিগারেশন দেখায় যা ব্লুটুথ হেলথ থার্ড-পার্টি অ্যাপ রিমোট ব্লুটুথ হেলথ ডিভাইসের সাথে যোগাযোগ করার জন্য রেজিস্টার করে।
BluetoothProfile.ServiceListener
একটি ইন্টারফেস যা BluetoothProfile ইন্টারপ্রসেস কমিউনিকেশন (IPC) ক্লায়েন্টদের বিজ্ঞপ্তি দেয় যখন তারা নির্দিষ্ট প্রোফাইল চালানো ইন্টার্নাল পরিষেবার সাথে কানেক্টেড বা ডিসকানেক্টেড হয়।