অ্যান্ড্রয়েড কেন্দ্রীয় ভূমিকায় ব্লুটুথ লো এনার্জি (BLE) এর জন্য অন্তর্নির্মিত প্ল্যাটফর্ম সমর্থন প্রদান করে এবং এমন API সরবরাহ করে যা অ্যাপগুলি ডিভাইসগুলি আবিষ্কার করতে, পরিষেবাগুলির জন্য অনুসন্ধান করতে এবং তথ্য প্রেরণ করতে ব্যবহার করতে পারে৷
সাধারণ ব্যবহারের ক্ষেত্রে নিম্নলিখিত অন্তর্ভুক্ত:
- কাছাকাছি ডিভাইসগুলির মধ্যে অল্প পরিমাণে ডেটা স্থানান্তর করা হচ্ছে।
- ব্যবহারকারীদের তাদের বর্তমান অবস্থানের উপর ভিত্তি করে একটি কাস্টমাইজড অভিজ্ঞতা দিতে প্রক্সিমিটি সেন্সরগুলির সাথে ইন্টারঅ্যাক্ট করা।
ক্লাসিক ব্লুটুথের বিপরীতে, BLE উল্লেখযোগ্যভাবে কম পাওয়ার খরচের জন্য ডিজাইন করা হয়েছে। এটি অ্যাপ্লিকেশানগুলিকে BLE ডিভাইসগুলির সাথে যোগাযোগ করতে দেয় যেগুলির শক্তির প্রয়োজনীয়তা কঠোর হয়, যেমন প্রক্সিমিটি সেন্সর, হার্ট রেট মনিটর এবং ফিটনেস ডিভাইস৷
সতর্কতা: যখন একজন ব্যবহারকারী তাদের ডিভাইসটি BLE ব্যবহার করে অন্য ডিভাইসের সাথে জোড়া দেয়, তখন দুটি ডিভাইসের মধ্যে যোগাযোগ করা ডেটা ব্যবহারকারীর ডিভাইসের সমস্ত অ্যাপে অ্যাক্সেসযোগ্য।
এই কারণে, যদি আপনার অ্যাপটি সংবেদনশীল ডেটা ক্যাপচার করে, তাহলে সেই ডেটার গোপনীয়তা রক্ষা করার জন্য আপনাকে অ্যাপ-লেয়ার নিরাপত্তা প্রয়োগ করা উচিত।
বুনিয়াদি
BLE-সক্ষম ডিভাইসগুলি একে অপরের মধ্যে ডেটা প্রেরণের জন্য, তাদের প্রথমে যোগাযোগের একটি চ্যানেল তৈরি করতে হবে। ব্লুটুথ LE API ব্যবহার করার জন্য আপনাকে আপনার ম্যানিফেস্ট ফাইলে একাধিক অনুমতি ঘোষণা করতে হবে৷ একবার আপনার অ্যাপকে ব্লুটুথ ব্যবহার করার অনুমতি দেওয়া হলে, আপনার অ্যাপটিকে BluetoothAdapter
অ্যাক্সেস করতে হবে এবং ডিভাইসে ব্লুটুথ উপলব্ধ কিনা তা নির্ধারণ করতে হবে যদি ব্লুটুথ উপলব্ধ থাকে, তাহলে ডিভাইসটি কাছাকাছি BLE ডিভাইসগুলির জন্য স্ক্যান করবে৷ একবার একটি ডিভাইস পাওয়া গেলে, BLE ডিভাইসের GATT সার্ভারের সাথে সংযোগ করার মাধ্যমে BLE ডিভাইসের ক্ষমতা আবিষ্কৃত হয়। একবার সংযোগ তৈরি হয়ে গেলে, উপলব্ধ পরিষেবা এবং বৈশিষ্ট্যগুলির উপর ভিত্তি করে সংযুক্ত ডিভাইসের সাথে ডেটা স্থানান্তর করা যেতে পারে ।
মূল শর্তাবলী এবং ধারণা
নিম্নলিখিত মূল BLE শর্তাবলী এবং ধারণাগুলির একটি সারাংশ:
- জেনেরিক অ্যাট্রিবিউট প্রোফাইল (GATT)
- GATT প্রোফাইল হল একটি সাধারণ স্পেসিফিকেশন যা একটি BLE লিঙ্কের মাধ্যমে "অ্যাট্রিবিউট" নামে পরিচিত ডেটার ছোট টুকরো পাঠানো এবং গ্রহণ করার জন্য। সমস্ত বর্তমান BLE অ্যাপ্লিকেশন প্রোফাইল GATT এর উপর ভিত্তি করে। আরও জানতে GitHub-এ Android BluetoothLeGatt নমুনা পর্যালোচনা করুন।
- প্রোফাইল
- ব্লুটুথ SIG BLE ডিভাইসের জন্য অনেক প্রোফাইল সংজ্ঞায়িত করে। একটি প্রোফাইল একটি নির্দিষ্ট অ্যাপ্লিকেশনে একটি ডিভাইস কিভাবে কাজ করে তার একটি স্পেসিফিকেশন। মনে রাখবেন যে একটি ডিভাইস একাধিক প্রোফাইল বাস্তবায়ন করতে পারে। উদাহরণস্বরূপ, একটি ডিভাইসে হার্ট রেট মনিটর এবং একটি ব্যাটারি স্তর সনাক্তকারী থাকতে পারে।
- অ্যাট্রিবিউট প্রোটোকল (ATT)
- GATT অ্যাট্রিবিউট প্রোটোকল (ATT) এর উপরে নির্মিত। এটিকে GATT/ATT নামেও উল্লেখ করা হয়। ATT BLE ডিভাইসে চালানোর জন্য অপ্টিমাইজ করা হয়েছে। এই লক্ষ্যে, এটি যতটা সম্ভব কম বাইট ব্যবহার করে। প্রতিটি অ্যাট্রিবিউটকে ইউনিভার্সলি ইউনিক আইডেন্টিফায়ার (UUID) দ্বারা স্বতন্ত্রভাবে চিহ্নিত করা হয়, যা একটি স্ট্রিং আইডির জন্য একটি প্রমিত 128-বিট ফর্ম্যাট যা তথ্যকে স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত হয়। ATT দ্বারা পরিবাহিত বৈশিষ্ট্যগুলি বৈশিষ্ট্য এবং পরিষেবা হিসাবে ফর্ম্যাট করা হয়৷
- চারিত্রিক
- একটি বৈশিষ্ট্যে একটি একক মান এবং 0-n বর্ণনাকারী থাকে যা বৈশিষ্ট্যের মান বর্ণনা করে। একটি বৈশিষ্ট্য একটি টাইপ হিসাবে চিন্তা করা যেতে পারে, একটি শ্রেণীর অনুরূপ।
- বর্ণনাকারী
- বর্ণনাকারীরা এমন বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে যা একটি চরিত্রগত মান বর্ণনা করে। উদাহরণস্বরূপ, একজন বর্ণনাকারী একটি মানব-পঠনযোগ্য বর্ণনা, একটি বৈশিষ্ট্যের মানের জন্য একটি গ্রহণযোগ্য পরিসর, বা একটি বৈশিষ্ট্যের মানের সাথে নির্দিষ্ট পরিমাপের একটি ইউনিট নির্দিষ্ট করতে পারে।
- সেবা
- একটি পরিষেবা হল বৈশিষ্ট্যের একটি সংগ্রহ। উদাহরণস্বরূপ, আপনার "হার্ট রেট মনিটর" নামে একটি পরিষেবা থাকতে পারে যাতে "হার্ট রেট পরিমাপ" এর মতো বৈশিষ্ট্য অন্তর্ভুক্ত থাকে। আপনি bluetooth.org- এ বিদ্যমান GATT-ভিত্তিক প্রোফাইল এবং পরিষেবাগুলির একটি তালিকা খুঁজে পেতে পারেন।
ভূমিকা এবং দায়িত্ব
যখন একটি ডিভাইস একটি BLE ডিভাইসের সাথে যোগাযোগ করে, তখন ভূমিকা এবং দায়িত্ব দুটি ভিন্ন উপায়ে বিভক্ত হয়:
কেন্দ্রীয় বনাম পেরিফেরাল। এটি BLE সংযোগের ক্ষেত্রেই প্রযোজ্য—কেন্দ্রীয় ভূমিকায় থাকা ডিভাইসটি স্ক্যান করে, বিজ্ঞাপনের সন্ধান করে এবং পেরিফেরাল ভূমিকাতে থাকা ডিভাইসটি বিজ্ঞাপন দেয়। দুটি ডিভাইস যা শুধুমাত্র পেরিফেরাল ভূমিকা সমর্থন করে একে অপরের সাথে কথা বলতে পারে না, এবং দুটি ডিভাইস যা শুধুমাত্র কেন্দ্রীয় ভূমিকা সমর্থন করতে পারে না।
GATT সার্ভার বনাম GATT ক্লায়েন্ট। এটি নির্ধারণ করে কিভাবে দুটি ডিভাইস সংযোগ স্থাপন করার পর একে অপরের সাথে কথা বলে। ক্লায়েন্টের ভূমিকায় থাকা ডিভাইসটি ডেটার জন্য অনুরোধ পাঠায় এবং সার্ভারের ভূমিকায় থাকা ডিভাইসটি সেগুলি পূরণ করে।
কেন্দ্রীয়-পেরিফেরাল এবং সার্ভার-ক্লায়েন্ট ভূমিকা বিভাগের মধ্যে পার্থক্য বোঝার জন্য, একটি উদাহরণ বিবেচনা করুন যেখানে আপনার কাছে একটি অ্যান্ড্রয়েড ফোন এবং একটি BLE-সক্ষম অ্যাক্টিভিটি ট্র্যাকার রয়েছে যা ফোনে সেন্সর ডেটা রিপোর্ট করে।
ফোন - কেন্দ্রীয় ডিভাইস - সক্রিয়ভাবে BLE ডিভাইসগুলির জন্য স্ক্যান করে৷ কার্যকলাপ ট্র্যাকার - পেরিফেরাল ডিভাইস - বিজ্ঞাপন দেয় এবং সংযোগের জন্য একটি অনুরোধ পাওয়ার জন্য অপেক্ষা করে৷
ফোন এবং কার্যকলাপ ট্র্যাকার একটি সংযোগ স্থাপন করার পরে, তারা একে অপরের কাছে GATT মেটাডেটা স্থানান্তর করা শুরু করে। এই ক্ষেত্রে, ফোনে চলমান অ্যাপটি ডেটার জন্য অনুরোধ পাঠায়, তাই এটি GATT ক্লায়েন্ট হিসাবে কাজ করে। কার্যকলাপ ট্র্যাকার সেই অনুরোধগুলি পূরণ করে, তাই এটি GATT সার্ভার হিসাবে কাজ করে।
অ্যাপের একটি বিকল্প ডিজাইনের পরিবর্তে ফোনটি GATT সার্ভারের ভূমিকা পালন করতে পারে। আরও তথ্যের জন্য BluetoothGattServer
দেখুন।