Android प्लैटफ़ॉर्म में, ब्लूटूथ नेटवर्क स्टैक के लिए सहायता शामिल है. इससे कोई डिवाइस, ब्लूटूथ की सुविधा वाले अन्य डिवाइसों के साथ वायरलेस तरीके से डेटा शेयर कर सकता है. ऐप्लिकेशन फ़्रेमवर्क, ब्लूटूथ एपीआई के ज़रिए ब्लूटूथ की सुविधा को ऐक्सेस करने की अनुमति देता है. इन एपीआई की मदद से, ऐप्लिकेशन अन्य ब्लूटूथ डिवाइसों से कनेक्ट हो सकते हैं. इससे पॉइंट-टू-पॉइंट और मल्टीपॉइंट वायरलेस सुविधाएं चालू हो जाती हैं.
ब्लूटूथ एपीआई का इस्तेमाल करके, कोई ऐप्लिकेशन ये काम कर सकता है:
- अन्य ब्लूटूथ डिवाइसों के लिए स्कैन करें.
- जोड़े गए ब्लूटूथ डिवाइसों के लिए, लोकल ब्लूटूथ अडैप्टर से क्वेरी करें.
- RFCOMM चैनल सेट अप करें.
- सेवा खोजने की सुविधा का इस्तेमाल करके, अन्य डिवाइसों से कनेक्ट करें.
- दूसरे डिवाइसों से डेटा ट्रांसफ़र करें.
- एक से ज़्यादा कनेक्शन मैनेज करना.
इस विषय में, क्लासिक ब्लूटूथ के बारे में बताया गया है. क्लासिक ब्लूटूथ, बैटरी की ज़्यादा खपत करने वाले कामों के लिए सही विकल्प है. इनमें स्ट्रीमिंग और डिवाइसों के बीच कम्यूनिकेट करना शामिल है. कम बैटरी की खपत करने वाले ब्लूटूथ डिवाइसों के लिए, ब्लूटूथ स्मार्ट कनेक्शन का इस्तेमाल करें.
इस दस्तावेज़ में, ब्लूटूथ की अलग-अलग प्रोफ़ाइलों के बारे में बताया गया है. साथ ही, इसमें ब्लूटूथ API का इस्तेमाल करके, ब्लूटूथ के ज़रिए कम्यूनिकेट करने के लिए ज़रूरी चार मुख्य टास्क पूरे करने का तरीका बताया गया है:
- ब्लूटूथ सेट अप किया जा रहा है.
- पेयर किए गए या आस-पास मौजूद डिवाइसों को ढूंढना.
- डिवाइसों को कनेक्ट किया जा रहा है.
- डिवाइसों के बीच डेटा ट्रांसफ़र करने से जुड़ी कुकी.
ब्लूटूथ एपीआई इस्तेमाल करने का डेमो देखने के लिए, Bluetooth Chat का सैंपल ऐप्लिकेशन देखें.
बुनियादी बातें
ब्लूटूथ की सुविधा वाले डिवाइसों को एक-दूसरे के बीच डेटा ट्रांसफ़र करने के लिए, सबसे पहले उन्हें पेयरिंग प्रोसेस का इस्तेमाल करके कम्यूनिकेशन चैनल बनाना होगा. एक डिवाइस, यानी कि खोजे जा सकने वाला डिवाइस, कनेक्शन के अनुरोधों को स्वीकार करने के लिए उपलब्ध होता है. कोई दूसरा डिवाइस, सेवा खोजने की प्रोसेस का इस्तेमाल करके, खोजे जा सकने वाले डिवाइस का पता लगाता है. जब खोजे जा सकने वाले डिवाइस पर, पेयर करने का अनुरोध स्वीकार कर लिया जाता है, तब दोनों डिवाइसों के बीच बॉन्डिंग की प्रक्रिया पूरी होती है. इस प्रक्रिया में, दोनों डिवाइस एक-दूसरे के साथ सुरक्षा कुंजियां शेयर करते हैं. डिवाइस, इन कुंजियों को बाद में इस्तेमाल करने के लिए कैश मेमोरी में सेव करते हैं. डिवाइसों को जोड़ने और उन्हें एक-दूसरे से कनेक्ट करने की प्रोसेस पूरी होने के बाद, दोनों डिवाइस एक-दूसरे के साथ जानकारी शेयर करते हैं. सेशन पूरा होने के बाद, डिवाइस को जोड़ने का अनुरोध करने वाला डिवाइस, उस चैनल को रिलीज़ कर देता है जिसने उसे खोजने लायक डिवाइस से लिंक किया था. हालांकि, दोनों डिवाइस एक-दूसरे से जुड़े रहते हैं. इसलिए, आने वाले समय में जब दोनों डिवाइस एक-दूसरे की रेंज में होंगे, तब वे अपने-आप फिर से कनेक्ट हो जाएंगे. ऐसा तब तक होगा, जब तक किसी भी डिवाइस से कनेक्शन नहीं हटाया जाता.
Bluetooth API का इस्तेमाल करने के लिए, आपको अपनी मेनिफ़ेस्ट फ़ाइल में कई अनुमतियों का एलान करना होगा. जब आपके ऐप्लिकेशन को ब्लूटूथ इस्तेमाल करने की अनुमति मिल जाती है, तब उसे 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