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