ब्लूटूथ के बारे में खास जानकारी

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 इंटरप्रोसेस कम्यूनिकेशन (आईपीसी) क्लाइंट को सूचना देता है कि वे किसी खास प्रोफ़ाइल को चलाने वाली इंटरनल सर्विस से कनेक्ट या डिसकनेक्ट हो गए हैं.