2014-11-19 7 views
8

मैं एंड्रॉइड और बीएलई में विकसित कर रहा हूं। मैं BLE डिवाइस करने के लिए ऐप स्वचालित पुनः कनेक्टBLE डिवाइस डिस्कनेक्ट के बाद चाहते हैं, लेकिन सीमा और विज्ञापन में वापस आएं।एंड्रॉइड में ऑटोकनेक्ट को सही होने पर ऐप बीएलई डिवाइस से क्यों कनेक्ट नहीं होता है?

मैं BLE डिवाइस से कनेक्ट करने के लिए निम्न कोड का उपयोग करें:

public void connect(final String address) { 
     // TODO Auto-generated method stub 
     Log.w(TAG, "BluetoothLeService Connect function."); 
     if(mBluetoothAdapter == null || address == null){ 
      Log.w(TAG, "BluetoothAdapter not initialized or unspecified address."); 
      //return false; 
     } 

     final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
     mBluetoothGatt = device.connectGatt(this, true, mGattCallback); 

    } 

मैं AutoConnecttrue करने के लिए सेट है, लेकिन यह फिर से कनेक्ट नहीं था, जब BLE डिवाइस डिस्कनेक्ट हो गया है और सीमा में वापस आने के लिए ।

एंड्रॉइड में ऑटोकनेक्ट को सही होने पर ऐप बीएलई डिवाइस से फिर से कनेक्ट क्यों नहीं होता है?

क्या मुझे कुछ याद आया?

अग्रिम धन्यवाद।

उत्तर

12

ऑटो कनेक्ट पैरामीटर यह निर्धारित करता है कि दूरस्थ डिवाइस (या) सक्रिय रूप से कनेक्ट करने के लिए या दूरस्थ डिवाइस स्कैन होने पर कनेक्शन को अंतिम रूप से स्कैन और अंतिम रूप से कनेक्ट करना है या नहीं।

लेकिन इसका मतलब यह नहीं है कि एक परिधीय जो दिन के लिए डिस्कनेक्ट हो गया है, फिर से दोबारा जुड़ जाएगा।

आम तौर पर, किसी डिवाइस के लिए पहले कनेक्शन को प्रत्यक्ष (ऑटोकनेक्ट सेट पर गलत होना चाहिए) और ज्ञात उपकरणों के बाद के कनेक्शन को ऑटोकनेक्ट पैरामीटर सेट के साथ सच में डाला जाना चाहिए।

कृपया ध्यान दें, ऑटो कनेक्ट केवल तभी काम करेगा जब डिवाइस अभी भी प्रसारण कर रहा हो। यदि नहीं, तो यह काम नहीं करेगा।

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

यदि सत्य है तो अपनी सेवा/प्रसारण रिसीवर को अनबिंड/अनधिकृत करें और डिवाइस पता का उपयोग करके फिर से कनेक्ट करें जिसे आपने पहले सहेजा होगा।

+0

ऑटोकनेक्ट एंड्रॉइड में सत्य होने पर डिवाइस डिस्कनेक्ट होने के बाद बीएलई पुनः कनेक्ट होने की समय सीमा क्या है? – Wun

+2

मुझे ईमानदार होने की ज़रूरत नहीं है, क्योंकि मुझे कभी भी ऑटो कनेक्ट सुविधा पूरी तरह विश्वसनीय नहीं है (कम से कम मेरे मामले में) और जैसा कि मैंने पहले उल्लेख किया था कि मैंने बीएलई के साथ पुनः कनेक्ट करने के लिए अपना कोड लिखा था जो कि अधिक प्रभावी था और विश्वसनीय। –

+0

मैं देखता हूं। आपकी सहायताके लिए धन्यवाद! – Wun

-1

बीएलई उपकरणों के साथ मेरे प्रयोग के अनुसार किटकैट और लॉलीपॉप जैसे विभिन्न निर्माणों में इसका अलग-अलग व्यवहार है। यहां तक ​​कि मैंने देखा है, स्कैनकॉलबैक का उपयोग एपीआई स्तर 24 में इतना भरोसेमंद नहीं है।

काम करने के लिए ऑटो कनेक्ट करने के लिए बीएलई डिवाइस सक्रिय होना चाहिए।

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { 
      gatt = device.connectGatt(this, true, executor); 
     } else { 
      gatt = device.connectGatt(this, false, executor); 
     } 

अब ऑटो दोनों लॉलीपॉप और Kitkat में मेरे लिए कनेक्ट काम कर रहा है:

मेरे लिए मैं किटकैट और लॉलीपॉप समर्थन करने के लिए तो वहीं कनेक्ट गैट मैं कहा जाता है के रूप में किया था।

+0

के लिए पुनः कनेक्ट कोड साझा कर सकते हैं अब आप गैर-किटकैट के लिए ऑटो कनेक्ट अक्षम कर सकते हैं? इसका मतलब है कि आप एक समय में 30 सेकंड टाइमआउट के अधिकतम प्रभाव और अधिकतम 1 लंबित कनेक्शन के साथ सीधे कनेक्ट का उपयोग करेंगे। – Emil

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