Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BLE堆栈在连接关闭和应用程序终止后重复重新连接到外围设备_Android_Bluetooth_Bluetooth Lowenergy - Fatal编程技术网

Android BLE堆栈在连接关闭和应用程序终止后重复重新连接到外围设备

Android BLE堆栈在连接关闭和应用程序终止后重复重新连接到外围设备,android,bluetooth,bluetooth-lowenergy,Android,Bluetooth,Bluetooth Lowenergy,我有一个应用程序,它可以打开一个与可编程设备的短期连接,执行一些特征性的读写操作,然后断开并关闭连接。应用程序使用autoReconnect=false,并且设备未配对或绑定 我看到Android出现了一些非常奇怪的行为,它似乎反复、意外地重新连接到外围设备,甚至在连接关闭后()d,应用程序被终止,甚至被卸载 此问题以前曾与Spotify触发重新连接有关(请参阅:),但在我的情况下,即使未安装Spotify,也会发生这种情况 能够可靠地再现此信息的设备包括: 谷歌像素,安卓8.1 LG Nex

我有一个应用程序,它可以打开一个与可编程设备的短期连接,执行一些特征性的读写操作,然后断开并关闭连接。应用程序使用autoReconnect=false,并且设备未配对或绑定

我看到Android出现了一些非常奇怪的行为,它似乎反复、意外地重新连接到外围设备,甚至在连接关闭后()d,应用程序被终止,甚至被卸载

此问题以前曾与Spotify触发重新连接有关(请参阅:),但在我的情况下,即使未安装Spotify,也会发生这种情况

能够可靠地再现此信息的设备包括:

  • 谷歌像素,安卓8.1
  • LG Nexus 5X,安卓7.1.2
  • 三星Galaxy S7,安卓7.0
  • 三星Galaxy S6,Andorid 6.0
连接是短暂的,持续时间约为3秒。我可以验证是否进行了连接,因为外围设备提供了连接的可视指示和日志输出

我很难理解是什么导致了重复的重新连接,因为BLE堆栈的logcat没有给出一个提示,说明是谁或是什么导致了连接。运行7.1.2的Nexus 5X上一个连接/断开周期的蓝牙服务(com.android.Bluetooth)的logcat输出如下所示:

05-15 10:36:55.428  6397  7029 W bt_smp  : smp_br_connect_callback is called on unexpected transport 2
05-15 10:36:55.428  6397  7029 W bt_btif : bta_dm_acl_change info: 0x0
05-15 10:36:55.428  6397  7029 E bt_btif : bta_gattc_cache_load: can't open GATT cache file /data/misc/bluetooth/gatt_cache_c4be844851e9 for reading, error: No such file or directory
05-15 10:36:55.428  6397  6526 D bt_btif_dm: remote version info [c4:be:84:48:51:e9]: 0, 0, 0
05-15 10:36:55.432  6397  6526 E BluetoothRemoteDevices: state12newState0
05-15 10:36:56.141  6397  7029 W bt_bta_gattc: bta_gattc_explore_srvc no more services found
05-15 10:36:56.141  6397  7029 I bt_bta_dm: bta_dm_gatt_disc_result service_id_uuid_len=2 
05-15 10:36:56.141  6397  7029 I bt_bta_dm: bta_dm_gatt_disc_result service_id_uuid_len=2 
05-15 10:36:56.142  6397  7029 I bt_bta_dm: bta_dm_gatt_disc_result service_id_uuid_len=2 
05-15 10:36:58.185  6397  7029 W bt_btif : bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
05-15 10:36:58.185  6397  7029 W bt_btif : bta_gattc_conn_cback() - cif=4 connected=0 conn_id=4 reason=0x0016
05-15 10:36:58.185  6397  7029 W bt_btif : bta_gattc_conn_cback() - cif=5 connected=0 conn_id=5 reason=0x0016
05-15 10:36:58.185  6397  7029 W bt_btif : bta_gattc_conn_cback() - cif=6 connected=0 conn_id=6 reason=0x0016
05-15 10:36:58.185  6397  7029 I bt_btm_sec: btm_sec_disconnected clearing pending flag handle:5 reason:22
05-15 10:36:58.187  6397  6526 E BluetoothRemoteDevices: state12newState1
05-15 10:36:58.199  6397  6397 D BluetoothMapService: onReceive
05-15 10:36:58.200  6397  6397 D BluetoothMapService: onReceive: android.bluetooth.device.action.ACL_DISCONNECTED
我目前调试的主要途径是在像素上闪烁AOSP,并向BT堆栈中添加额外的日志语句。到目前为止,这个问题还没有出现在AOSP上(当然),这让我相信某些第三方或谷歌服务可能对此负责


知道怎么查到这个吗?目前只有循环蓝牙有帮助

我们的外围设备(也没有spotify)也遇到了同样的问题。我没有BLE日志,但我们在各种手机上都有过类似的体验,至少包括:华为P10、Nexus 5X、三星Galaxy S6、OnePlus 3T等。我将在这一问题上添加一个悬赏(我可以的最大代表数),只要它再过一天或几天符合条件2@OrionEdwards有趣!很高兴知道其他人也在经历这种情况。您是否尝试过在Nexus 5X上闪烁AOSP构建?@AlexSuzuki我观察到类似问题,并发现在短时间跨度(“短=小于10秒”)内重复、明确(即我的代码正在启动连接)连接尝试时会出现此问题。你是在一次连接还是多次连接后观察到的?@SimonCampbell是的,我是在应用程序重复显式连接/断开连接后观察到的。与外围设备的连接是短暂的,仅交换少量事务数据,然后再次关闭连接。我还没有真正考虑到连接率。你找到了什么线索来解释为什么会发生这种情况吗?@AlexSuzuki不幸的是,为什么目前不在我的专业范围之内。个人证据表明,连接尝试的速度直接导致了这个问题,这就是我要求澄清的原因。鉴于此,我们可以通过将连接尝试的速率限制为每10秒一次来解决这个问题。