
एंड्रॉइड एक डिफ़ॉल्ट ब्लूटूथ स्टैक प्रदान करता है जो क्लासिक ब्लूटूथ और ब्लूटूथ लो एनर्जी दोनों का समर्थन करता है। ब्लूटूथ का उपयोग करते हुए, एंड्रॉइड डिवाइस पास के ब्लूटूथ डिवाइस के साथ डेटा भेजने और प्राप्त करने के लिए व्यक्तिगत क्षेत्र नेटवर्क बना सकते हैं।
एंड्रॉइड 4.3 और बाद में, एंड्रॉइड ब्लूटूथ स्टैक ब्लूटूथ कम ऊर्जा (बीएलई) को लागू करने की क्षमता प्रदान करता है। BLE API का पूरी तरह से लाभ उठाने के लिए, Android ब्लूटूथ HCI आवश्यकताएँ का पालन करें। एक योग्य चिपसेट वाले एंड्रॉइड डिवाइस क्लासिक ब्लूटूथ या क्लासिक ब्लूटूथ और बीएलई दोनों को लागू कर सकते हैं। BLE पुराने ब्लूटूथ चिपसेट के साथ पीछे की ओर संगत नहीं है।
एंड्रॉइड 8.0 में, देशी ब्लूटूथ स्टैक ब्लूटूथ 5 के लिए पूरी तरह से योग्य है। उपलब्ध ब्लूटूथ 5 सुविधाओं का उपयोग करने के लिए, डिवाइस में ब्लूटूथ 5 योग्य चिपसेट होना आवश्यक है।
Android 8.0 आर्किटेक्चर
एक ब्लूटूथ एप्लिकेशन बाइंडर के माध्यम से ब्लूटूथ प्रक्रिया के साथ संचार करता है। ब्लूटूथ प्रक्रिया ब्लूटूथ स्टैक के साथ संचार करने के लिए जेएनआई का उपयोग करती है और डेवलपर्स को विभिन्न ब्लूटूथ प्रोफाइल तक पहुंच प्रदान करती है। यह आरेख ब्लूटूथ स्टैक की सामान्य संरचना को दर्शाता है:

- आवेदन की रूपरेखा
- एप्लिकेशन फ्रेमवर्क स्तर पर एप्लिकेशन कोड है, जो ब्लूटूथ हार्डवेयर के साथ बातचीत करने के लिए android.bluaxy API का उपयोग करता है। आंतरिक रूप से, यह कोड Binder IPC तंत्र के माध्यम से ब्लूटूथ प्रक्रिया को कॉल करता है।
- ब्लूटूथ सिस्टम सेवा
-
packages/apps/Bluetooth
में स्थित ब्लूटूथ सिस्टम सेवा, एक एंड्रॉइड ऐप के रूप में पैक की जाती है और एंड्रॉइड फ्रेमवर्क परत पर ब्लूटूथ सेवाओं और प्रोफाइल को लागू करती है। यह ऐप JNI के माध्यम से देशी ब्लूटूथ स्टैक में कॉल करता है। - JNI
- Android.blu
packages/apps/Bluetooth/jni
जुड़ा JNI कोडpackages/apps/Bluetooth/jni
। JNI कोड ब्लूटूथ स्टैक में कॉल करता है जब कुछ ब्लूटूथ ऑपरेशन होते हैं, जैसे कि उपकरणों की खोज की जाती है। - ब्लूटूथ स्टैक
- डिफ़ॉल्ट ब्लूटूथ स्टैक AOSP में प्रदान किया गया है और
system/bt
में स्थित है। स्टैक सामान्य ब्लूटूथ HAL को लागू करता है और इसे एक्सटेंशन और कॉन्फ़िगरेशन परिवर्तन के साथ कस्टमाइज़ करता है। - विक्रेता कार्यान्वयन
- हार्डवेयर इंटरफ़ेस डिज़ाइन भाषा (HIDL) का उपयोग करके वेंडर डिवाइस ब्लूटूथ स्टैक के साथ इंटरैक्ट करते हैं।
HIDL
HIDL ब्लूटूथ स्टैक और वेंडर कार्यान्वयन के बीच इंटरफ़ेस को परिभाषित करता है। ब्लूटूथ HIDL फ़ाइलों को उत्पन्न करने के लिए, HIDL पीढ़ी के उपकरण में ब्लूटूथ इंटरफ़ेस फ़ाइलों को पास करें। इंटरफ़ेस फाइलें hardware/interfaces/bluetooth
में स्थित हैं।
ब्लूटूथ स्टैक विकास
एंड्रॉइड 8.0 ब्लूटूथ स्टैक पूरी तरह से योग्य ब्लूटूथ स्टैक है। योग्यता सूची QDID 97584 के तहत ब्लूटूथ SIG वेबसाइट पर है।
कोर ब्लूटूथ स्टैक system/bt
में रहता है। विकास AOSP में होता है, और योगदान का स्वागत है।
Android 7.x और पहले का आर्किटेक्चर
एक ब्लूटूथ सिस्टम सेवा जेएनआई के माध्यम से और बिंदर आईपीसी के माध्यम से अनुप्रयोगों के साथ ब्लूटूथ स्टैक के साथ संचार करती है। सिस्टम सेवा डेवलपर्स को विभिन्न ब्लूटूथ प्रोफाइल तक पहुंच प्रदान करती है। यह आरेख ब्लूटूथ स्टैक की सामान्य संरचना को दर्शाता है:

- आवेदन की रूपरेखा
- एप्लिकेशन फ्रेमवर्क स्तर पर एप्लिकेशन कोड है, जो ब्लूटूथ हार्डवेयर के साथ बातचीत करने के लिए android.bluaxy API का उपयोग करता है। आंतरिक रूप से, यह कोड Binder IPC तंत्र के माध्यम से ब्लूटूथ प्रक्रिया को कॉल करता है।
- ब्लूटूथ सिस्टम सेवा
-
packages/apps/Bluetooth
में स्थित ब्लूटूथ सिस्टम सेवा, एक एंड्रॉइड ऐप के रूप में पैक की जाती है और यह एंड्रॉइड फ्रेमवर्क परत पर ब्लूटूथ सेवा और प्रोफाइल को लागू करती है। यह ऐप JNI के माध्यम से HAL लेयर में कॉल करता है। - JNI
- Android.blu
packages/apps/Bluetooth/jni
जुड़ा JNI कोडpackages/apps/Bluetooth/jni
। JNI कोड HAL लेयर में कॉल करता है और कुछ ब्लूटूथ ऑपरेशन होने पर HAL से कॉलबैक प्राप्त करता है, जैसे कि डिवाइस को खोजे जाने पर। - एचएएल
- हार्डवेयर अमूर्त परत मानक इंटरफ़ेस को परिभाषित करती है जिसेandroid.bluaxy API और ब्लूटूथ प्रक्रिया कॉल करती है और आपको अपने ब्लूटूथ हार्डवेयर फ़ंक्शन को सही ढंग से लागू करने के लिए लागू करना होगा। ब्लूटूथ एचएएल के लिए हेडर फ़ाइल
hardware/libhardware/include/hardware/bluetooth.h
। इसके अतिरिक्त, सभीhardware/libhardware/include/hardware/bt_*.h
की समीक्षा करेंhardware/libhardware/include/hardware/bt_*.h
फाइलें। - ब्लूटूथ स्टैक
- डिफ़ॉल्ट ब्लूटूथ स्टैक आपके लिए प्रदान किया जाता है और
system/bt
में स्थित होता है। स्टैक सामान्य ब्लूटूथ HAL को लागू करता है और इसे एक्सटेंशन और कॉन्फ़िगरेशन परिवर्तन के साथ कस्टमाइज़ करता है। - विक्रेता एक्सटेंशन
- ट्रेसिंग के लिए कस्टम एक्सटेंशन और एक HCI लेयर जोड़ने के लिए, आप एक लिबेट-वेंडर मॉड्यूल बना सकते हैं और इन घटकों को निर्दिष्ट कर सकते हैं।
एचएएल को लागू करना
ब्लूटूथ HAL /hardware/libhardware/include/hardware/bluetooth.h
में स्थित है। bluetooth.h
फ़ाइल में ब्लूटूथ स्टैक के लिए मूल इंटरफ़ेस होता है, और आपको इसके कार्यों को लागू करना होगा।
प्रोफाइल-विशिष्ट फाइलें उसी निर्देशिका में स्थित हैं। जानकारी के लिए, HAL फ़ाइल संदर्भ देखें ।