मैं एक Android ऐप्लिकेशन है कि एक BLE डिवाइस के साथ स्थापित करता है तथा हाल ही में कुछ अजीब व्यवहार भर में ठोकर खाई विकासशील हूँ परिधीय से पुन: कनेक्ट: डिवाइस से एप्लिकेशन डिस्कनेक्ट, कुछ सेकंड बाद में कुछ और कनेक्शन स्थापित करने लगता है जब ।एंड्रॉयड BLE अप्रत्याशित रूप से और बार-बार
मैं इस मुद्दे को और अधिक पूरी तरह से चित्रित करने की प्रक्रिया में हूं और ब्लूटूथ एमएपी और पीबीएपी प्रोफाइल पर ध्यान केंद्रित कर रहा हूं; वे मुद्दे के बिंदु के आसपास लॉग में दिखाई देते हैं। मैं अनिश्चित हूं, हालांकि, अगर यह मूल कारण है, और न ही मुझे एक कामकाज मिला है।
ऐप एपीआई 23-25 का समर्थन करता है। आज तक, मैंने सिम कार्ड के साथ फोन में केवल समस्या का अनुभव किया है, जो कि पीबीएपी को फिर से इंगित करता है क्योंकि कई फोन सिम कार्ड के साथ ही इस प्रोफ़ाइल का समर्थन करते हैं। मैं अभी तक एपीआई 23 पर पुन: उत्पन्न करने में सक्षम नहीं हूं, लेकिन अभी के लिए उन टेस्ट फोन में सिम कार्ड नहीं हैं।
बीएलई डिवाइस के पास ऑटोमोटिव एप्लिकेशन के साथ कुछ लेना देना नहीं है, न ही इसमें संपर्क या संदेश से निपटने की क्षमता है। मैंने ऐप के भीतर जानबूझकर इनमें से कोई भी सक्षम नहीं किया है। इसके अलावा, मेरे ऐप और डिवाइस के बीच कोई जोड़ी/बंधन नहीं है, न ही डिवाइस समर्थन युग्मन/बंधन करता है।
ज्यादातर मामलों में, डिवाइस को डिस्कनेक्ट करने के कुछ सेकंड बाद, दोबारा जुड़ने का प्रयास होता है। ऐप में बाद में कनेक्ट-डिस्कनेक्ट अनुक्रमों का एक ही व्यवहार होता है। हालांकि, मैंने कम से कम एक उदाहरण में देखा है जहां पुन: कनेक्ट (ऐप के बाहर) हर कुछ सेकंड में अनिश्चित काल तक जारी रहता है।
समस्या को हल करने के लिए एकमात्र चीज फोन पर ब्लूटूथ चक्र है, या ब्लूटूथ शेयर प्रक्रिया को मजबूर करना है। मुझे विश्वास नहीं है कि रीकनेक्ट वापस आते हैं, लेकिन यह आम बात है कि उपयोगकर्ता मेरे ऐप के माध्यम से डिवाइस से डिस्कनेक्ट होने के बाद फिर से दिखाई देता है।
मैं पीबीएपी/एमएपी से बहुत परिचित नहीं हूं इसलिए मुझे पता नहीं है कि वे कैसे सक्षम होते हैं या यदि संभव हो, तो उन्हें कैसे अक्षम करें। मुझे यकीन नहीं है कि वे अपराधी हैं, लेकिन वे फिर से कनेक्ट होने के समय लॉग में दिखाई देते हैं।
डिस्कनेक्शन और बाद में पुन: कनेक्शन के बिंदु के आसपास लॉग विवरण निम्नलिखित है। यहां इंटरफ़ेस का नाम "Foo04" है मैक = बी 0: बी 4: 48: ई 8: एफए: 04।
03-31 14:27:44.305 D/RxBle#Radio(14105): STARTED RxBleRadioOperationDisconnect(186827491)
03-31 14:27:44.319 D/BluetoothManager(14105): getConnectionState()
03-31 14:27:44.320 D/BluetoothManager(14105): getConnectedDevices
03-31 14:27:44.332 D/BluetoothGatt(14105): cancelOpen() - device: B0:B4:48:E8:FA:04
03-31 14:27:44.334 D/BtGatt.GattService(13168): clientDisconnect() - address=B0:B4:48:E8:FA:04, connId=5
03-31 14:27:44.339 E/bt_btif (13168): bta_gattc_mark_bg_conn unable to find the bg connection mask for: b0:b4:48:e8:fa:04
03-31 14:27:44.340 D/BtGatt.GattService(13168): onDisconnected() - clientIf=5, connId=5, address=B0:B4:48:E8:FA:04
03-31 14:27:44.341 D/BluetoothGatt(14105): onClientConnectionState() - status=0 clientIf=5 device=B0:B4:48:E8:FA:04
03-31 14:27:44.342 D/RxBle#BluetoothGatt(14105): onConnectionStateChange newState=0 status=0
03-31 14:27:44.345 D/RxBle#Radio(14105): FINISHED RxBleRadioOperationDisconnect(186827491)
03-31 14:27:44.352 D/BluetoothGatt(14105): close()
03-31 14:27:44.352 D/BluetoothGatt(14105): unregisterApp() - mClientIf=5
03-31 14:27:44.354 D/BtGatt.GattService(13168): unregisterClient() - clientIf=5
03-31 14:27:45.376 W/bt_l2cap(13168): l2cble_process_conn_update_evt: Error status: 22
03-31 14:27:45.377 W/bt_btif (13168): bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
03-31 14:27:45.377 W/bt_btif (13168): bta_gattc_conn_cback() - cif=4 connected=0 conn_id=4 reason=0x0016
03-31 14:27:45.377 I/bt_btm_sec(13168): btm_sec_disconnected clearing pending flag handle:13 reason:22
03-31 14:27:45.381 E/BluetoothRemoteDevices(13168): state12newState1
03-31 14:27:45.393 D/BluetoothMapService(13168): onReceive
03-31 14:27:45.393 D/BluetoothMapService(13168): onReceive: android.bluetooth.device.action.ACL_DISCONNECTED
03-31 14:27:45.402 D/BluetoothPbapReceiver(13168): PbapReceiver onReceive action =
03-31 14:27:45.404 D/BluetoothPbapReceiver(13168): Calling start service with action = null
03-31 14:27:45.405 I/TrustAgent.Tracker(15208): [BluetoothConnectionTracker] Bluetooth disconnect broadast for Foo04 B0:B4:48:E8:FA:04
03-31 14:27:46.407 W/bt_smp (13168): smp_br_connect_callback is called on unexpected transport 2
03-31 14:27:46.408 W/bt_btif (13168): bta_dm_acl_change info: 0x0
03-31 14:27:46.408 I/bt_bta_dm(13168): bta_dm_gatt_disc_result service_id_uuid_len=2
03-31 14:27:46.408 I/bt_bta_dm(13168): bta_dm_gatt_disc_result service_id_uuid_len=2
03-31 14:27:46.408 D/bt_btif_dm(13168): remote version info [b0:b4:48:e8:fa:04]: 0, 0, 0
03-31 14:27:46.408 I/bt_bta_dm(13168): bta_dm_gatt_disc_result service_id_uuid_len=2
03-31 14:27:46.408 I/bt_bta_dm(13168): bta_dm_gatt_disc_result service_id_uuid_len=16
03-31 14:27:46.408 I/bt_bta_dm(13168): bta_dm_gatt_disc_result service_id_uuid_len=2
03-31 14:27:46.412 E/BluetoothRemoteDevices(13168): state12newState0
03-31 14:27:46.457 I/TrustAgent.Tracker(15208): [BluetoothConnectionTracker] Bluetooth connect broadast for Foo04 B0:B4:48:E8:FA:04
03-31 14:27:47.317 I/WCNSS_FILTER(13194): ibs_msm_serial_clock_vote: vote UART CLK OFF using UART driver's ioctl()
03-31 14:27:48.421 I/WCNSS_FILTER(13194): ibs_msm_serial_clock_vote: vote UART CLK ON using UART driver's ioctl()
03-31 14:27:48.483 W/bt_btif (13168): bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
03-31 14:27:48.483 W/bt_btif (13168): bta_gattc_conn_cback() - cif=4 connected=0 conn_id=4 reason=0x0016
03-31 14:27:48.483 I/bt_btm_sec(13168): btm_sec_disconnected clearing pending flag handle:14 reason:22
03-31 14:27:48.488 E/BluetoothRemoteDevices(13168): state12newState1
03-31 14:27:48.506 D/BluetoothMapService(13168): onReceive
03-31 14:27:48.506 D/BluetoothMapService(13168): onReceive: android.bluetooth.device.action.ACL_DISCONNECTED
03-31 14:27:48.524 D/BluetoothPbapReceiver(13168): PbapReceiver onReceive action = android.bluetooth.device.action.ACL_DISCONNECTED
03-31 14:27:48.527 D/BluetoothPbapReceiver(13168): Calling start service with action = null
03-31 14:27:48.530 I/TrustAgent.Tracker(15208): [BluetoothConnectionTracker] Bluetooth disconnect broadast for Foo04 B0:B4:48:E8:FA:04
03-31 14:27:49.430 I/WCNSS_FILTER(13194): ibs_msm_serial_clock_vote: vote UART CLK OFF using UART driver's ioctl()
आगे की जांच पड़ताल
मैं Android BLE ACL_DISCONNECTED sometimes delayed में एक संबंधित प्रश्न पोस्ट।
डिवाइसों में एक समानता जहां मैंने समस्या देखी है, सिम कार्ड का अस्तित्व रहा है, लेकिन दूसरा एपीआई 24 या 25 है। मैं अभी तक एपीआई 23 डिवाइस पर पुन: उत्पन्न करने में सक्षम नहीं हूं या, संस्करण के बावजूद, एक सिम कार्ड शारीरिक रूप से स्थापित किए बिना।
आगे की जांच के बाद, मुझे सिम कार्ड और एपीआई संस्करण के अधिक संदेह हैं। कई उत्कृष्ट (या हाल ही में तय) बग हैं जिनसे संबंधित व्यवहार है, जिनमें से कुछ एपीआई संस्करणों को इंगित करते हैं> 23; हालांकि, मैं बाद में एपीआई 23 पर पुन: पेश करने में सक्षम हूं।
- BLE: Having two pending direct connections and cancelling the second one does not work
- BLE: Disconnecting/closing GATT directly after connect sometimes has no effect due to race conditions
- BLE: Closing gatt object or app does not remove pending connection since Android N
- Race condition in BluetoothGatt when using BluetoothDevice#connectGatt()
मैं महसूस कर रहा हूँ इस छोटे PBAP/एमएपी प्रोफाइल से कोई लेना देना नहीं है। इसके बजाय, लॉग इन में मौजूद अस्तित्व इन प्रोफाइलों को किसी भी बीएलई डिस्कनेक्शन के साथ सक्रिय करने के लिए इंगित करता है। पुन: कनेक्शन व्यवहार को प्रकट नहीं करते समय, मैं टीआई सेंसरटाग के साथ गड़बड़ करते समय समान पीबीएपी/एमएपी सक्रियण देखने में सक्षम था: इन प्रोफाइलों ने फिर से डिस्कनेक्ट (मेरे आवेदन से संबंधित नहीं) को लॉग किया।
प्रभावित डिवाइस
मैं, डिग्री बदलती करने के लिए इस मुद्दे को पुन: पेश करने के लिए, निम्न उपकरणों पर कर लिया है की सूची:
- सैमसंग S6 - एपीआई 23
- सैमसंग S7 - एपीआई 23
- सैमसंग S7 एज - एपीआई 24
- सोनी एक्सपीरिया Z5 कॉम्पैक्ट - एपीआई 24
- मोटोरोला ड्रोइड टर्बो 2 - एपीआई 24
- नेक्सस 5x - एपीआई 25
- गूगल पिक्सेल - एपीआई 25
आपको बहुत बहुत धन्यवाद। – chetbox