2015-10-01 15 views
5

के लिए स्कैनिंग के बिना कनेक्ट करें मेरा ऐप ब्लूटूथ LE डिवाइस से कनेक्ट होगा। आमतौर पर आप mBluetoothAdapter.startLeScan(mLeScanCallback); का उपयोग कर डिवाइस स्कैन करते हैं। कॉलबैक आपको उपलब्ध उपकरणों के बारे में जानकारी प्रदान करता है।एंड्रॉइड 4.4: ब्लूटूथ कम ऊर्जा; बीएलई डिवाइस

आप एक समर्पित डिवाइस से कनेक्ट करना चाहते हैं, तो आप कर

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 

और फिर

mBluetoothGatt = device.connectGatt(this, false, mGattCallback); 

की तरह कुछ मेरे लिए यह केवल एक चीज है कि आप एक BLE डिवाइस से कनेक्ट करने की जरूरत है की तरह लग रहा , बीएलई पते को जानना है और फिर उपरोक्त दो चरणों के साथ उससे जुड़ना है। तो अगर मुझे पहले से ही एक बीएलई पता पता है (उदाहरण के लिए यह बीएलई डिवाइस के लेबल पर लिखा गया है) मुझे बीएलई स्कैन करने की आवश्यकता नहीं है।

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

क्या ऐसा होना चाहिए या मैंने कुछ देखा है?

धन्यवाद एक बहुत, स्टीफन

+0

यह [जोड़ी और/या बंधन] हो सकता है (https://piratecomm.wordpress.com/2014/01/19/ble-pairing-vs-bonding/) कनेक्ट करने से पहले आवश्यक है? – JimmyB

+0

जहां तक ​​मैं बीएलई समझ गया, यह आवश्यक नहीं है। अगर मैं स्कैन करता हूं, तो मैं जोड़ी या बंधन के लिए कुछ नहीं करता और यह काम करता है। समस्या किसी डिवाइस से सीधे बीएलई स्कैन किए बिना कनेक्ट करना है। – Stefan

उत्तर

4

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

मुझे लगता है कि यदि आप ब्लूटूथ पते के लिए मान पुनर्प्राप्त करने का प्रयास करते हैं तो यह एक बार स्कैन किए जाने तक शून्य हो जाएगा।

+0

क्या आपके पास यह पुष्टि करने वाला कोई स्रोत है? – Andy

+1

[स्रोत] (https://developer.bluetooth.org/TechnologyOverview/Pages/Baseband.aspx) यह विशेष रूप से यह नहीं कहता है और जब मैं ब्लूटूथ प्रोटोकॉल पर कोई विशेषज्ञ नहीं हूं, तो मेरी कटौती यह है कि डिवाइस का पता डिवाइस की पहचान करने के लिए इस्तेमाल किया जा सकता है, यह निर्दिष्ट नहीं करता कि किस चैनल पर संवाद करना है। प्रोटोकॉल एक दूसरे के बारे में जानने और कनेक्शन के लिए और निर्देश प्रदान करने के लिए दास और मास्टर उपकरणों के लिए एक पूछताछ चैनल निर्दिष्ट करता है। एक बार उस जानकारी को पुनर्प्राप्त करने के बाद, मास्टर उस जानकारी को सहेज सकता है और अगली बार सीधे कनेक्शन कर सकता है क्योंकि उसके पास पहले से ही निर्देश हैं। –

+0

ध्यान दें कि यह बीएलई उपकरणों के लिए भी सच है जो बंधे नहीं हैं। जिसका मतलब है कि एक बार स्कैन पूरा हो गया है और सेवाओं की खोज एक बार हो जाएगी जब एंड्रॉइड सेवाओं को कैश करेगा और ब्लूटूथडिवाइस डिवाइस = mBluetoothAdapter.getRemoteDevice (पता) को कॉल करेगा; परिणामस्वरूप 1 सेकंड से कम कनेक्शन होगा। – benchuk

संबंधित मुद्दे