ब्लूटूथ

Android Bluetooth HAL का आइकॉन

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

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

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

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

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

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

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

ऐप्लिकेशन फ़्रेमवर्क
ऐप्लिकेशन फ़्रेमवर्क लेवल पर, ऐप्लिकेशन कोड होता है. यह कोड, android.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 में मौजूद है. स्टैक, सामान्य ब्लूटूथ एचएएल को लागू करता है. साथ ही, एक्सटेंशन और कॉन्फ़िगरेशन में बदलाव करके, इसे अपनी ज़रूरत के मुताबिक बनाता है.
वेंडर का लागू किया गया वर्शन
वेंडर के डिवाइस, एचएएल इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल) का इस्तेमाल करके, ब्लूटूथ स्टैक के साथ इंटरैक्ट करते हैं.

एचआईडीएल

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

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

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

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