Android, डिफ़ॉल्ट रूप से ब्लूटूथ स्टैक उपलब्ध कराता है. यह क्लासिक ब्लूटूथ और ब्लूटूथ लो एनर्जी (बीएलई), दोनों के साथ काम करता है. ब्लूटूथ का इस्तेमाल करके, Android डिवाइस पर्सनल एरिया नेटवर्क बना सकते हैं. इससे वे आस-पास मौजूद ब्लूटूथ डिवाइसों के साथ डेटा भेज और पा सकते हैं.
Android 4.3 और इसके बाद के वर्शन में, Android Bluetooth स्टैक, BLE को लागू करने की सुविधा देता है. BLE API का पूरी तरह से इस्तेमाल करने के लिए, Android Bluetooth HCI की ज़रूरी शर्तें पढ़ें. जिन Android डिवाइसों में ज़रूरी शर्तें पूरी करने वाला चिपसेट होता है वे क्लासिक ब्लूटूथ या क्लासिक ब्लूटूथ और बीएलई, दोनों को लागू कर सकते हैं. BLE, ब्लूटूथ चिपसेट के पुराने वर्शन के साथ काम नहीं करता.
Android 8.0 में, ब्लूटूथ स्टैक को Bluetooth 5 के लिए पूरी तरह से क्वालिफ़ाई किया गया है. ब्लूटूथ 5 की उपलब्ध सुविधाओं का इस्तेमाल करने के लिए, डिवाइस में ब्लूटूथ 5 सर्टिफ़ाइड चिपसेट होना ज़रूरी है.
Android आर्किटेक्चर
ब्लूटूथ ऐप्लिकेशन, बाइंडर के ज़रिए ब्लूटूथ प्रोसेस से कम्यूनिकेट करता है. ब्लूटूथ प्रोसेस, Java Native Interface (JNI) का इस्तेमाल करके ब्लूटूथ स्टैक से कम्यूनिकेट करती है. साथ ही, डेवलपर को अलग-अलग ब्लूटूथ प्रोफ़ाइल ऐक्सेस करने की सुविधा देती है. इस डायग्राम में, ब्लूटूथ स्टैक का सामान्य स्ट्रक्चर दिखाया गया है:
पहली इमेज. Android का ब्लूटूथ आर्किटेक्चर.
- ऐप्लिकेशन फ़्रेमवर्क
- ऐप्लिकेशन फ़्रेमवर्क लेवल पर ऐप्लिकेशन कोड होता है. यह ब्लूटूथ हार्डवेयर के साथ इंटरैक्ट करने के लिए,
android.bluetooth
एपीआई का इस्तेमाल करता है. इंटरनल तौर पर, यह कोड Binder IPC मेकेनिज़्म के ज़रिए, ब्लूटूथ प्रोसेस को कॉल करता है. - ब्लूटूथ ऐप्लिकेशन
packages/modules/Bluetooth/android/app
में मौजूद ब्लूटूथ ऐप्लिकेशन को Android ऐप्लिकेशन के तौर पर पैकेज किया जाता है. यह Android फ़्रेमवर्क लेयर पर ब्लूटूथ प्रोफ़ाइलें लागू करता है. यह ऐप्लिकेशन, जेएनआई के ज़रिए ब्लूटूथ स्टैक को कॉल करता है.- JNI
- से जुड़ा JNI कोड,
packages/modules/Bluetooth/android/app/jni
में मौजूद है.android.bluetooth
जब ब्लूटूथ से जुड़ी कुछ कार्रवाइयां होती हैं, तब JNI कोड, ब्लूटूथ स्टैक को कॉल करता है. जैसे, जब डिवाइसों का पता लगाया जाता है. - ब्लूटूथ स्टैक
- डिफ़ॉल्ट ब्लूटूथ स्टैक, AOSP में उपलब्ध होता है. यह
packages/modules/Bluetooth/system
में मौजूद होता है. स्टैक, सामान्य ब्लूटूथ एचएएल को लागू करता है. साथ ही, एक्सटेंशन और कॉन्फ़िगरेशन में बदलाव करके उसे पसंद के मुताबिक बनाता है. - वेंडर की ओर से लागू करना
- वेंडर के डिवाइस, एचएएल इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल) का इस्तेमाल करके, ब्लूटूथ स्टैक के साथ इंटरैक्ट करते हैं.
HIDL
एचआईडीएल, ब्लूटूथ स्टैक और वेंडर के लागू किए गए सिस्टम के बीच इंटरफ़ेस तय करता है. Bluetooth HIDL फ़ाइलें जनरेट करने के लिए, Bluetooth इंटरफ़ेस फ़ाइलों को HIDL जनरेशन टूल में पास करें. इंटरफ़ेस फ़ाइलें, hardware/interfaces/bluetooth
में मौजूद होती हैं.
ब्लूटूथ स्टैक डेवलपमेंट
Android ब्लूटूथ स्टैक, पूरी तरह से योग्य ब्लूटूथ स्टैक है. क्वालिफ़िकेशन की सूची, Bluetooth SIG की वेबसाइट पर QDID 169365 में दी गई है. इसे देखने के लिए, आपको साइन इन करना होगा.
कोर ब्लूटूथ स्टैक, packages/modules/Bluetooth
में मौजूद होता है.
इसे AOSP में डेवलप किया जाता है. इसमें योगदान देने का स्वागत है.