क्या ब्लूटूथ लो एनर्जी (बीएलई) डिवाइस से स्वचालित रूप से कनेक्ट करना संभव है?एंड्रॉइड में ब्लूटूथ कम ऊर्जा डिवाइस को जोड़ना
Android documentation इंगित करता है कि [BluetoothDevice.connectGatt()
] (https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt(android.content.Context, बूलियन, android.bluetooth.BluetoothGattCallback)) एक AutoConnect पैरामीटर है: यह के रूप में के रूप में जल्द
बूलियन यह बताते हैं कि स्वचालित रूप से BLE डिवाइस से कनेक्ट करने के
हालांकि, इसे कॉल करने के लिए, आपको पहले BluetoothDevice
की आवश्यकता है। AFAIK इसे प्राप्त करने का एकमात्र तरीका उपलब्ध उपकरणों को स्कैन करके है। किसी डिवाइस से कनेक्ट करने के लिए हर बार एक स्कैन सेट करना वांछनीय तरीके से प्रतीत नहीं होता है। इसके अलावा, मैंने autoConnect = true
का उपयोग करके अपने परिधीय से कनेक्ट करने के लिए nRF Control Master Panel का उपयोग करने का प्रयास किया, लेकिन यह डिवाइस से कनेक्ट नहीं है। autoConnect
के बिना कनेक्ट करने से यह कनेक्ट हो जाता है, और मैं सफलतापूर्वक इस तरह से अपने परिधीय से डेटा पढ़ने और लिखने में कामयाब रहा हूं।
ब्लूटूथ में सामान्य तरीके से दो डिवाइस जोड़े गए हैं। हालांकि, मेरे बीएलई डिवाइस की खोज करना और BluetoothDevice.createBond()
का उपयोग करना प्रतीत नहीं होता है। मेरे ACTION_BOND_STATE_CHANGED
-कॉलबैक में, EXTRA_BOND_STATE
और EXTRA_PREVIOUS_BOND_STATE
बस BOND_BONDING
से BOND_NONE
और पीछे जाएं। मैं एक त्रुटि या कुछ भी नहीं पढ़ता - तो शायद मैं यहाँ कुछ याद कर रहा हूँ। यहां कॉलबैक है:
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
final int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR);
final int prevState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.ERROR);
Log.e(TAG, "prevState " + prevState + ", state " + state);
}
}
};
तो इस प्रकार का बंधन काम नहीं कर रहा है।
मेरा सवाल है: क्या मैं युग्मन या ऑटोकनेक्ट के लिए कुछ गलत कर रहा हूं? या फिर मैं वर्तमान में यह एकमात्र सही तरीका कैसे काम कर रहा हूं? यह वास्तविक दर्द (और बैटरी-नाली) की तरह लगता है कि हर बार उपकरणों के लिए स्कैन करना है, देखें कि डिवाइस वहां है या नहीं, अगर डेटा पढ़ा जाए और कल वापस जांचें, अन्यथा एक घंटे या उससे भी ज्यादा समय में जांचें। ब्लूटूथ का मुद्दा यह है कि जब भी यह निकट हो, इसे सीधे जोड़ना चाहिए, है ना?
तो जब भी ऐप शुरू होता है, पहली बार मुझे इसके लिए स्कैन करना पड़ता है? जोड़ों के उपकरणों के विरोध में एक बहुत उपयोगकर्ता के अनुकूल विधि की तरह प्रतीत नहीं होता है। – jdepypere
हां, एंड्रॉइड ब्ली स्टैक बिल्कुल उपयोगकर्ता के अनुकूल नहीं है)))) सभी async, प्रत्येक स्टार्टअप पर rescan, आदि ... आप चिपचिपा सेवा में सभी को रखने की कोशिश कर सकते हैं, लेकिन अगर यह बंद हो जाएगा - आप ' ब्ली rescan की आवश्यकता होगी। – Raiv
ठीक है, सोचा कि मुझे कुछ याद आ रहा था क्योंकि मैंने सोचा था कि बीएलई बड़े पैमाने पर समर्थित होगा ... – jdepypere