ब्लूटूथ

Android Bluetooth HAL का आइकॉन

Android, डिफ़ॉल्ट रूप से ब्लूटूथ स्टैक उपलब्ध कराता है. यह क्लासिक ब्लूटूथ और ब्लूटूथ स्मार्ट (बीएलई), दोनों के साथ काम करता है. ब्लूटूथ का इस्तेमाल करके, Android डिवाइस पर्सनल एरिया नेटवर्क बना सकते हैं. इससे वे आस-पास मौजूद ब्लूटूथ डिवाइसों के साथ डेटा भेज और पा सकते हैं.

Android 4.3 और इसके बाद के वर्शन में, Android Bluetooth स्टैक BLE को लागू करने की सुविधा देता है. BLE API का पूरी तरह से इस्तेमाल करने के लिए, Android Bluetooth HCI की ज़रूरी शर्तें पढ़ें. जिन Android डिवाइसों में ज़रूरी शर्तें पूरी करने वाला चिपसेट होता है वे क्लासिक ब्लूटूथ या क्लासिक ब्लूटूथ और बीएलई, दोनों को लागू कर सकते हैं. BLE, ब्लूटूथ चिपसेट के पुराने वर्शन के साथ काम नहीं करता.

Android 8.0 में, ब्लूटूथ स्टैक को ब्लूटूथ 5 के लिए पूरी तरह से क्वालिफ़ाई किया गया है. ब्लूटूथ 5 की उपलब्ध सुविधाओं का इस्तेमाल करने के लिए, डिवाइस में ब्लूटूथ 5 सर्टिफ़ाइड चिपसेट होना ज़रूरी है.

Android आर्किटेक्चर

ब्लूटूथ ऐप्लिकेशन, Binder के ज़रिए ब्लूटूथ प्रोसेस से कम्यूनिकेट करता है. ब्लूटूथ प्रोसेस, ब्लूटूथ स्टैक से कम्यूनिकेट करने के लिए Java Native Interface (JNI) का इस्तेमाल करती है. साथ ही, डेवलपर को अलग-अलग ब्लूटूथ प्रोफ़ाइल का ऐक्सेस देती है. इस डायग्राम में, ब्लूटूथ स्टैक का सामान्य स्ट्रक्चर दिखाया गया है:

Android के ब्लूटूथ स्टैक की लेयर दिखाने वाला डायग्राम.

पहली इमेज. Android का ब्लूटूथ आर्किटेक्चर.

ऐप्लिकेशन फ़्रेमवर्क
ऐप्लिकेशन फ़्रेमवर्क लेवल पर ऐप्लिकेशन कोड होता है. यह ब्लूटूथ हार्डवेयर के साथ इंटरैक्ट करने के लिए, android.bluetooth एपीआई का इस्तेमाल करता है. इंटरनल तौर पर, यह कोड Binder IPC मेकेनिज़्म के ज़रिए Bluetooth प्रोसेस को कॉल करता है.
ब्लूटूथ ऐप्लिकेशन
packages/modules/Bluetooth/android/app में मौजूद ब्लूटूथ ऐप्लिकेशन को Android ऐप्लिकेशन के तौर पर पैकेज किया जाता है. यह Android फ़्रेमवर्क लेयर पर ब्लूटूथ प्रोफ़ाइलें लागू करता है. यह ऐप्लिकेशन, JNI के ज़रिए ब्लूटूथ स्टैक को कॉल करता है.
JNI
android.bluetooth से जुड़ा JNI कोड, packages/modules/Bluetooth/android/app/jni में मौजूद है. जब ब्लूटूथ से जुड़ी कुछ कार्रवाइयां होती हैं, तब JNI कोड, ब्लूटूथ स्टैक को कॉल करता है. जैसे, जब डिवाइसों का पता चलता है.
ब्लूटूथ स्टैक
डिफ़ॉल्ट ब्लूटूथ स्टैक, AOSP में उपलब्ध होता है. यह packages/modules/Bluetooth/system में मौजूद होता है. स्टैक, सामान्य ब्लूटूथ HAL को लागू करता है. साथ ही, एक्सटेंशन और कॉन्फ़िगरेशन में बदलाव करके उसे पसंद के मुताबिक बनाता है.
वेंडर की ओर से लागू करना
वेंडर के डिवाइस, एचएएल इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल) का इस्तेमाल करके, ब्लूटूथ स्टैक के साथ इंटरैक्ट करते हैं.

HIDL

HIDL, ब्लूटूथ स्टैक और वेंडर के लागू किए गए कोड के बीच इंटरफ़ेस तय करता है. ब्लूटूथ एचआईडीएल फ़ाइलें जनरेट करने के लिए, ब्लूटूथ इंटरफ़ेस फ़ाइलों को एचआईडीएल जनरेशन टूल में पास करें. इंटरफ़ेस फ़ाइलें, hardware/interfaces/bluetooth में मौजूद होती हैं.

ब्लूटूथ स्टैक डेवलपमेंट

Android ब्लूटूथ स्टैक, पूरी तरह से योग्य ब्लूटूथ स्टैक है. क्वालिफ़िकेशन की सूची, Bluetooth SIG की वेबसाइट पर QDID 169365 में दी गई है. इसे देखने के लिए, आपको साइन इन करना होगा.

कोर ब्लूटूथ स्टैक, packages/modules/Bluetooth में मौजूद होता है. इसे AOSP में डेवलप किया जाता है. इसमें योगदान देने का स्वागत है.