অ্যান্ড্রয়েড কেন্দ্রীয় ভূমিকায় ব্লুটুথ লো এনার্জি (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 মেটাডেটা স্থানান্তর করা শুরু করে। তারা যে ধরণের ডেটা স্থানান্তর করে তার উপর নির্ভর করে, একটি বা অন্যটি সার্ভার হিসাবে কাজ করতে পারে। উদাহরণস্বরূপ, যদি অ্যাক্টিভিটি ট্র্যাকার ফোনে সেন্সর ডেটা রিপোর্ট করতে চায়, তাহলে অ্যাক্টিভিটি ট্র্যাকার সার্ভার হিসেবে কাজ করার জন্য এটি বোধগম্য হতে পারে। যদি অ্যাক্টিভিটি ট্র্যাকার ফোন থেকে আপডেট পেতে চায়, তাহলে ফোনের সার্ভার হিসেবে কাজ করার জন্য এটি বোধগম্য হতে পারে।
এই বিষয়ে ব্যবহৃত উদাহরণে, অ্যাপটি (একটি Android ডিভাইসে চলমান) হল GATT ক্লায়েন্ট। অ্যাপটি GATT সার্ভার থেকে ডেটা পায়, যা একটি BLE হার্ট রেট মনিটর যা হার্ট রেট প্রোফাইল সমর্থন করে। আপনি GATT সার্ভার ভূমিকা পালন করার জন্য বিকল্পভাবে আপনার অ্যাপ ডিজাইন করতে পারেন। আরও তথ্যের জন্য BluetoothGattServer
দেখুন।