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

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

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

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

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

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

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

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

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

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

ব্লুটুথ 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) ক্লায়েন্টদের বিজ্ঞপ্তি দেয় যখন তারা নির্দিষ্ট প্রোফাইল চালানো ইন্টার্নাল পরিষেবার সাথে কানেক্টেড বা ডিসকানেক্টেড হয়।