Android प्लैटफ़ॉर्म में, ब्लूटूथ नेटवर्क स्टैक की सुविधा शामिल है. इसकी मदद से, कोई डिवाइस अन्य ब्लूटूथ डिवाइसों के साथ वायरलेस तरीके से डेटा शेयर कर सकता है. ऐप्लिकेशन फ़्रेमवर्क, ब्लूटूथ एपीआई के ज़रिए ब्लूटूथ की सुविधा को ऐक्सेस करने की अनुमति देता है. इन एपीआई की मदद से, ऐप्लिकेशन अन्य ब्लूटूथ डिवाइसों से कनेक्ट हो सकते हैं. इससे पॉइंट-टू-पॉइंट और मल्टीपॉइंट वायरलेस सुविधाएं चालू हो जाती हैं.
ब्लूटूथ एपीआई का इस्तेमाल करके, कोई ऐप्लिकेशन ये काम कर सकता है:
- अन्य ब्लूटूथ डिवाइसों को स्कैन करें.
- जोड़े गए ब्लूटूथ डिवाइसों के लिए, लोकल ब्लूटूथ अडैप्टर से क्वेरी करना.
- RFCOMM चैनल बनाना.
- डिवाइस और सेवाओं की अपने-आप पहचान करने की सुविधा की मदद से, अन्य डिवाइसों से कनेक्ट करना.
- अन्य डिवाइसों पर डेटा ट्रांसफ़र करना और उनसे डेटा पाना.
- एक से ज़्यादा कनेक्शन मैनेज करना.
इस दस्तावेज़ में क्लासिक ब्लूटूथ के बारे में बताया गया है. क्लासिक ब्लूटूथ, बैटरी की ज़्यादा खपत करने वाली गतिविधियों के लिए सही विकल्प है. इनमें डिवाइसों के बीच स्ट्रीमिंग और कम्यूनिकेशन शामिल है. कम पावर वाले ब्लूटूथ डिवाइसों के लिए, ब्लूटूथ लो एनर्जी कनेक्शन का इस्तेमाल करें.
इस दस्तावेज़ में, ब्लूटूथ की अलग-अलग प्रोफ़ाइलों के बारे में बताया गया है. साथ ही, ब्लूटूथ का इस्तेमाल करके कम्यूनिकेट करने के लिए ज़रूरी चार मुख्य टास्क पूरे करने के लिए, ब्लूटूथ एपीआई इस्तेमाल करने का तरीका बताया गया है:
- ब्लूटूथ सेट अप किया जा रहा है.
- ऐसे डिवाइसों को खोजा जा रहा है जो जोड़े गए हैं या आस-पास मौजूद हैं.
- डिवाइसों को कनेक्ट करना.
- एक डिवाइस से दूसरे डिवाइस में डेटा ट्रांसफ़र करना.
बुनियादी बातें
ब्लूटूथ की सुविधा वाले डिवाइसों के बीच डेटा ट्रांसफ़र करने के लिए, उन्हें पहले ब्लूटूथ से कनेक्ट करना होगा. खोजे जाने लायक डिवाइस, इनकमिंग कनेक्शन के अनुरोधों के लिए खुद को उपलब्ध कराता है. कोई दूसरा डिवाइस, डिवाइस और सेवाओं की अपने-आप पहचान करने की प्रोसेस का इस्तेमाल करके, खोजे जाने लायक डिवाइस का पता लगाता है. जब खोजा जा सकने वाला डिवाइस, ब्लूटूथ से जोड़ने का अनुरोध स्वीकार कर लेता है, तो दोनों डिवाइसों के बीच बॉन्डिंग की प्रोसेस पूरी हो जाती है. इस प्रोसेस में, दोनों डिवाइस एक-दूसरे के साथ सुरक्षा कुंजियां शेयर करते हैं. डिवाइस, इन कुंजियों को कैश मेमोरी में सेव कर लेते हैं, ताकि बाद में इनका इस्तेमाल किया जा सके.
पेयरिंग और बॉन्डिंग की प्रोसेस पूरी होने के बाद, दोनों डिवाइसों के बीच जानकारी शेयर की जाती है. सेशन पूरा होने के बाद, पेयरिंग का अनुरोध करने वाला डिवाइस, उस चैनल को रिलीज़ कर देता है जिसने उसे खोजे जाने लायक डिवाइस से लिंक किया था. हालांकि, दोनों डिवाइसों के बीच बॉन्ड बना रहता है. इसलिए, वे आने वाले समय में किसी सेशन के दौरान अपने-आप फिर से कनेक्ट हो सकते हैं. इसके लिए, ज़रूरी है कि वे एक-दूसरे की रेंज में हों और किसी भी डिवाइस ने बॉन्ड को न हटाया हो.
ब्लूटूथ एपीआई का इस्तेमाल करने के लिए, आपको अपनी मेनिफ़ेस्ट फ़ाइल में कई अनुमतियों का एलान करना होगा. इसके बाद, BluetoothAdapter को ऐक्सेस करें और देखें कि डिवाइस पर ब्लूटूथ की सुविधा उपलब्ध है या नहीं. अगर ब्लूटूथ की सुविधा उपलब्ध है, तो ये तीन तरीके अपनाएं:
- आस-पास मौजूद ब्लूटूथ डिवाइसों को ढूंढना. इनमें पहले से जोड़े गए डिवाइस या नए डिवाइस शामिल हैं.
- किसी ब्लूटूथ डिवाइस को कनेक्ट करना.
- कनेक्ट किए गए डिवाइस से डेटा ट्रांसफ़र करना.
कुछ डिवाइस, खास ब्लूटूथ प्रोफ़ाइल का इस्तेमाल करते हैं. इससे यह पता चलता है कि वे कौनसा डेटा उपलब्ध कराते हैं.
मुख्य क्लास और इंटरफ़ेस
सभी ब्लूटूथ एपीआई, android.bluetooth पैकेज में उपलब्ध हैं.
ब्लूटूथ कनेक्शन बनाने के लिए, आपको इन क्लास और इंटरफ़ेस की ज़रूरत होगी:
BluetoothAdapter- यह लोकल ब्लूटूथ अडैप्टर (ब्लूटूथ रेडियो) को दिखाता है.
BluetoothAdapter, ब्लूटूथ से होने वाले सभी इंटरैक्शन के लिए एंट्री-पॉइंट है. इसका इस्तेमाल करके, अन्य ब्लूटूथ डिवाइसों को खोजा जा सकता है. साथ ही, जोड़े गए डिवाइसों की सूची देखी जा सकती है. इसके अलावा, किसी जाने-माने मैक पते का इस्तेमाल करके,BluetoothDeviceको इंस्टैंशिएट किया जा सकता है. साथ ही, अन्य डिवाइसों से कम्यूनिकेशन सुनने के लिए,BluetoothServerSocketबनाया जा सकता है. BluetoothDevice- यह क्लास, किसी रिमोट ब्लूटूथ डिवाइस को दिखाती है. इस क्लास का इस्तेमाल करके,
BluetoothSocketकी मदद से किसी रिमोट डिवाइस से कनेक्शन का अनुरोध करें या डिवाइस के बारे में जानकारी पाएं. जैसे, उसका नाम, पता, क्लास, और बॉन्डिंग स्टेट. BluetoothSocket- यह ब्लूटूथ सॉकेट के इंटरफ़ेस को दिखाता है. यह टीसीपी
Socketकी तरह होता है. यह कनेक्शन पॉइंट है. इसकी मदद से, कोई ऐप्लिकेशनInputStreamऔरOutputStreamका इस्तेमाल करके, किसी दूसरे ब्लूटूथ डिवाइस के साथ डेटा शेयर कर सकता है. BluetoothServerSocket- यह एक ओपन सर्वर सॉकेट को दिखाता है, जो आने वाले अनुरोधों को सुनता है. यह टीसीपी
ServerSocketकी तरह होता है. दो डिवाइसों को कनेक्ट करने के लिए, एक डिवाइस को इस क्लास के साथ सर्वर सॉकेट खोलना होगा. जब कोई ब्लूटूथ डिवाइस इस डिवाइस से कनेक्ट करने का अनुरोध करता है, तो यह डिवाइस अनुरोध को स्वीकार कर लेता है. इसके बाद, कनेक्ट किया गयाBluetoothSocketदिखाता है. BluetoothClass- ब्लूटूथ डिवाइस की सामान्य विशेषताओं और क्षमताओं के बारे में बताता है. यह प्रॉपर्टी का सिर्फ़ पढ़ने के लिए उपलब्ध सेट है. इससे डिवाइस की क्लास और सेवाओं के बारे में पता चलता है. इस जानकारी से डिवाइस के टाइप के बारे में काम की जानकारी मिलती है. हालांकि, इस क्लास के एट्रिब्यूट से, डिवाइस पर काम करने वाली सभी ब्लूटूथ प्रोफ़ाइलों और सेवाओं के बारे में जानकारी नहीं मिलती.
BluetoothProfile- ब्लूटूथ प्रोफ़ाइल को दिखाने वाला इंटरफ़ेस. ब्लूटूथ प्रोफ़ाइल, ब्लूटूथ की मदद से डिवाइसों के बीच होने वाले कम्यूनिकेशन के लिए, वायरलेस इंटरफ़ेस की खास जानकारी होती है. इसका एक उदाहरण हैंड्स-फ़्री प्रोफ़ाइल है. प्रोफ़ाइलों के बारे में ज़्यादा जानने के लिए, ब्लूटूथ प्रोफ़ाइलें देखें.
BluetoothHeadset- मोबाइल फ़ोन के साथ ब्लूटूथ हेडसेट इस्तेमाल करने की सुविधा देता है. इसमें ब्लूटूथ हेडसेट प्रोफ़ाइल और हैंड्स-फ़्री (v1.5) प्रोफ़ाइल, दोनों शामिल हैं.
BluetoothA2dp- इससे यह तय होता है कि ऐडवांस्ड ऑडियो डिस्ट्रिब्यूशन प्रोफ़ाइल (A2DP) का इस्तेमाल करके, ब्लूटूथ कनेक्शन के ज़रिए एक डिवाइस से दूसरे डिवाइस पर अच्छी क्वालिटी का ऑडियो कैसे स्ट्रीम किया जा सकता है.
BluetoothHealth- यह ब्लूटूथ सेवा को कंट्रोल करने वाली हेल्थ डिवाइस प्रोफ़ाइल प्रॉक्सी को दिखाता है.
BluetoothHealthCallback- एक ऐब्स्ट्रैक्ट क्लास, जिसका इस्तेमाल
BluetoothHealthकॉलबैक लागू करने के लिए किया जाता है. ऐप्लिकेशन के रजिस्ट्रेशन की स्थिति और ब्लूटूथ चैनल की स्थिति में होने वाले बदलावों के बारे में अपडेट पाने के लिए, आपको इस क्लास को एक्सटेंड करना होगा और कॉलबैक के तरीके लागू करने होंगे. BluetoothHealthAppConfiguration- यह ऐप्लिकेशन के उस कॉन्फ़िगरेशन को दिखाता है जिसे तीसरे पक्ष का ब्लूटूथ हेल्थ ऐप्लिकेशन, किसी रिमोट ब्लूटूथ हेल्थ डिवाइस से कम्यूनिकेट करने के लिए रजिस्टर करता है.
BluetoothProfile.ServiceListener- एक ऐसा इंटरफ़ेस जो
BluetoothProfileइंटरप्रोसेस कम्यूनिकेशन (आईपीसी) क्लाइंट को सूचना देता है कि वे किसी खास प्रोफ़ाइल को चलाने वाली इंटरनल सर्विस से कनेक्ट या डिसकनेक्ट हो गए हैं.