ब्लूटूथ

एंड्रॉइड ब्लूटूथ एचएएल आइकन

एंड्रॉइड एक डिफ़ॉल्ट ब्लूटूथ स्टैक प्रदान करता है जो क्लासिक ब्लूटूथ और ब्लूटूथ लो एनर्जी दोनों का समर्थन करता है। ब्लूटूथ का उपयोग करके, एंड्रॉइड डिवाइस पास के ब्लूटूथ डिवाइस के साथ डेटा भेजने और प्राप्त करने के लिए व्यक्तिगत क्षेत्र नेटवर्क बना सकते हैं।

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

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

एंड्रॉइड आर्किटेक्चर

एक ब्लूटूथ एप्लिकेशन बाइंडर के माध्यम से ब्लूटूथ प्रक्रिया के साथ संचार करता है। ब्लूटूथ प्रक्रिया ब्लूटूथ स्टैक के साथ संचार करने के लिए जेएनआई का उपयोग करती है और डेवलपर्स को विभिन्न ब्लूटूथ प्रोफाइल तक पहुंच प्रदान करती है। यह आरेख ब्लूटूथ स्टैक की सामान्य संरचना दिखाता है:

एंड्रॉइड ब्लूटूथ आर्किटेक्चर
चित्रा 1. एंड्रॉइड ब्लूटूथ आर्किटेक्चर
आवेदन ढांचा
एप्लिकेशन फ्रेमवर्क स्तर पर एप्लिकेशन कोड होता है, जो ब्लूटूथ हार्डवेयर के साथ इंटरैक्ट करने के लिए android.bluetooth API का उपयोग करता है। आंतरिक रूप से, यह कोड बाइंडर आईपीसी तंत्र के माध्यम से ब्लूटूथ प्रक्रिया को कॉल करता है।
ब्लूटूथ सिस्टम सेवा
packages/apps/Bluetooth में स्थित ब्लूटूथ सिस्टम सेवा, एंड्रॉइड ऐप के रूप में पैक की जाती है और एंड्रॉइड फ्रेमवर्क परत पर ब्लूटूथ सेवाओं और प्रोफाइल को लागू करती है। यह ऐप जेएनआई के माध्यम से देशी ब्लूटूथ स्टैक में कॉल करता है।
जेएनआई
android.bluetooth से जुड़ा JNI कोड packages/apps/Bluetooth/jni । जेएनआई कोड ब्लूटूथ स्टैक में कॉल करता है जब कुछ ब्लूटूथ ऑपरेशन होते हैं, जैसे कि जब डिवाइस की खोज की जाती है।
ब्लूटूथ स्टैक
डिफ़ॉल्ट ब्लूटूथ स्टैक एओएसपी में प्रदान किया जाता है और system/bt में स्थित होता है। स्टैक सामान्य ब्लूटूथ एचएएल को लागू करता है और इसे एक्सटेंशन और कॉन्फ़िगरेशन परिवर्तनों के साथ अनुकूलित करता है।
विक्रेता कार्यान्वयन
विक्रेता डिवाइस हार्डवेयर इंटरफ़ेस डिज़ाइन लैंग्वेज (HIDL) का उपयोग करके ब्लूटूथ स्टैक के साथ इंटरैक्ट करते हैं।

HIDL

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

ब्लूटूथ स्टैक विकास

Android ब्लूटूथ स्टैक पूरी तरह से योग्य ब्लूटूथ स्टैक है। क्यूडीआईडी ​​​​169365 के तहत ब्लूटूथ एसआईजी वेबसाइट पर योग्यता सूची है।

कोर ब्लूटूथ स्टैक system/bt में रहता है। एओएसपी में विकास होता है, और योगदान का स्वागत है।

Android 7.x और पहले का आर्किटेक्चर

एक ब्लूटूथ सिस्टम सेवा ब्लूटूथ स्टैक के साथ जेएनआई के माध्यम से और बाइंडर आईपीसी के माध्यम से अनुप्रयोगों के साथ संचार करती है। सिस्टम सेवा डेवलपर्स को विभिन्न ब्लूटूथ प्रोफाइल तक पहुंच प्रदान करती है। यह आरेख ब्लूटूथ स्टैक की सामान्य संरचना दिखाता है:

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

एचएएल को लागू करना

ब्लूटूथ एचएएल /hardware/libhardware/include/hardware/bluetooth.h में स्थित है। bluetooth.h फ़ाइल में ब्लूटूथ स्टैक के लिए मूल इंटरफ़ेस है, और आपको इसके कार्यों को लागू करना होगा।

प्रोफ़ाइल-विशिष्ट फ़ाइलें उसी निर्देशिका में स्थित हैं। विवरण के लिए, एचएएल फ़ाइल संदर्भ देखें