2017-04-01 10 views
12

मैं एक 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 पर पुन: पेश करने में सक्षम हूं।

मैं महसूस कर रहा हूँ इस छोटे PBAP/एमएपी प्रोफाइल से कोई लेना देना नहीं है। इसके बजाय, लॉग इन में मौजूद अस्तित्व इन प्रोफाइलों को किसी भी बीएलई डिस्कनेक्शन के साथ सक्रिय करने के लिए इंगित करता है। पुन: कनेक्शन व्यवहार को प्रकट नहीं करते समय, मैं टीआई सेंसरटाग के साथ गड़बड़ करते समय समान पीबीएपी/एमएपी सक्रियण देखने में सक्षम था: इन प्रोफाइलों ने फिर से डिस्कनेक्ट (मेरे आवेदन से संबंधित नहीं) को लॉग किया।

प्रभावित डिवाइस

मैं, डिग्री बदलती करने के लिए इस मुद्दे को पुन: पेश करने के लिए, निम्न उपकरणों पर कर लिया है की सूची:

  • सैमसंग S6 - एपीआई 23
  • सैमसंग S7 - एपीआई 23
  • सैमसंग S7 एज - एपीआई 24
  • सोनी एक्सपीरिया Z5 कॉम्पैक्ट - एपीआई 24
  • मोटोरोला ड्रोइड टर्बो 2 - एपीआई 24
  • नेक्सस 5x - एपीआई 25
  • गूगल पिक्सेल - एपीआई 25

उत्तर

11

जांच के एक बड़े सौदे के बाद, मैं अपने मुद्दे के मूल कारण को निर्धारित करने में सक्षम था: Spotify।

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

ऐसा प्रतीत होता है कि स्पॉटिफ़ी की एक ऐसी सेवा है जो से डिस्कनेक्ट करने के लिए पंजीकृत है ब्लूटूथ परिधीय। जब सिस्टम स्पॉटिफी को सूचित करता है, तो सेवा तुरंत डिस्कनेक्टेड परिधीय से जुड़ती है --- मुझे Spotify से संचार की विशेषता नहीं है। ~ 5 सेकंड के बाद कनेक्शन गिरा दिया गया है; हालांकि, चूंकि Spotify ब्लूटूथ डिस्कनेक्शन घटनाओं के बारे में अधिसूचित है, सेवा फिर से परिधीय से जुड़ने की कोशिश करता है। यह प्रभावी रूप से एक अनंत लूप है जिसे केवल एंड्रॉइड डिवाइस पर स्पॉटिफ़ी या साइकलिंग ब्लूटूथ को बलपूर्वक रोककर छोड़ा जा सकता है।

जांच करने के लिए, मैंने एक सरल ऐप विकसित किया है जो ब्लूटूथ कनेक्शन और डिस्कनेक्शन (ACL_CONNECTED, ACL_DISCONNECTED) ईवेंट की अधिसूचना और रिपोर्ट करता है।मैंने अपने एंड्रॉइड डिवाइस पर एक बीएलई स्कैनर का इस्तेमाल किया और विभिन्न ब्लूटूथ परिधीय से जुड़े/डिस्कनेक्ट किया। मेरा टेस्ट ऐप परिधीय के साथ मेरी प्रारंभिक बातचीत दिखाएगा, उसके बाद कनेक्ट की एक अनंत धारा के बाद घटनाओं को डिस्कनेक्ट करें। दोबारा, यह तब तक जारी रहेगा जब तक स्पॉटिफ़ मजबूर नहीं था।

निम्न उदाहरण प्रवेश है ...

04-10 19:56:24.109 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:56:32.057 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
04-10 19:56:34.197 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:56:40.396 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
04-10 19:56:43.857 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:56:49.962 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
04-10 19:56:51.130 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:57:17.348 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
04-10 19:57:17.927 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:57:37.621 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
04-10 19:57:38.157 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_CONNECTED 
04-10 19:57:44.364 D/BluetoothConnectionMoni: onReceive: deviceName=System05 deviceAddr=B0:B4:48:E8:D7:03 action=ACL_DISCONNECTED 
... 

यह निर्धारित करने के लिए Spotify मूल कारण था मुश्किल था।

मेरा पहला संकेत डेवलपर विकल्प -> रनिंग सर्विसेज को देखकर और नियमित रूप से परिधीय कनेक्शन/डिस्कनेक्शन के साथ सहसंबंधित स्पॉटिफ़ को ध्यान में रखते हुए देख रहा था।

अंत में, यह उन्मूलन की प्रक्रिया के लिए नीचे आ गया: एक बार अपमानजनक व्यवहार शुरू होने के बाद, मैं चुनिंदा एप्स की सूची के माध्यम से चुनिंदा हो गया, बल-रोकथाम वाले लोगों को संभवतः ब्लूटूथ में कुछ रूचि थी, अंततः इस मुद्दे को देखते हुए जब मैंने Spotify बंद कर दिया तो तुरंत बंद करो।

मैंने कई हफ्ते पहले Spotify को विस्तृत बग रिपोर्ट प्रदान की है, लेकिन मुझे अभी तक उनसे वापस सुनना नहीं है।

+0

आपको बहुत बहुत धन्यवाद। – chetbox

2

मैं भी सिर्फ इस मुद्दे को एक ब्लूटूथ BLE आवेदन के विकास भर में ठोकर खाई है। मेरा एंड्रॉइड डिवाइस एपीआई 24 के साथ सोनी (http://www.gsmarena.com/sony_xperia_x_performance-7949.php) है। इसे एपीआई 23 से अपग्रेड किया गया था। एंड्रॉइड 6 -> 7.

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

यह बीएलई चिप संस्करण 4.2 के साथ equpped है - सुनिश्चित नहीं है कि यह आपके मुद्दे के मामले में है। मैं आज इस मुद्दे पर काम करने की कोशिश करूंगा।

+0

अधिक शोध आज और सैमसंग ए 5 के साथ एक ही एंड्रॉइड ऐप - एंड्रॉइड एपीआई 23 इस मुद्दे का उत्पादन नहीं करता है। जैसा कि आप कहते हैं, बीटी को बंद करना और फिर पुन: कनेक्शन को रोकने का एकमात्र तरीका है। –

+0

मैंने मूल प्रश्न में कुछ अतिरिक्त जानकारी जोड़ दी। हालांकि सभी उपकरणों में वास्तविक सिम कार्ड स्थापित थे, अब मैं दृढ़ता से महसूस नहीं करता कि यह कारण, या पीबीएपी/एमएपी प्रोफाइल से संबंधित है। समस्या के साथ मौजूदा डिवाइस: सोनी एक्सपीरिया जेड 5 कॉम्पैक्ट (एपीआई 24); नेक्सस 5x (एपीआई 25); Google पिक्सेल (एपीआई 25); मोटोरोला (एपीआई 24)। –

+0

किसी भी मौके से आपके पास अपने फोन पर Spotify स्थापित है? –

1

यह स्पॉटिफ़ 8.4.19.7 9 2 को जारी किया गया है जो 2017-09-14 को जारी किया गया है।

+1

पीछा करने के लिए धन्यवाद, पीटर। यह वास्तव में सितंबर रिलीज के रूप में तय किया गया है --- ~ 6 महीने बाद मैंने स्पॉटफी को इस मुद्दे की सूचना दी। मेरे पास हर किसी को सूचित करने के लिए यहां वापस आने का समय नहीं था, इसलिए समय लेने के लिए धन्यवाद। –

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