关闭蓝牙并重新打开后,Android 6.0将无法再连接到BLE设备

时间:2016-03-10 15:03:34

标签: android bluetooth-lowenergy android-6.0-marshmallow

我编写了一个扫描蓝牙智能设备的应用程序,您可以从列表中选择一个,连接到它并交换一些数据。一切顺利,直到Android 6.0。

首先,我修复了新的权限系统,以便应用程序在运行时请求位置权限,以便能够扫描设备。有了这个应用程序就像以前一样工作,但是在关闭蓝牙并重新打开之后,应用程序将不再连接,但总是返回断开状态,并且在gatt回调中返回状态码133。

然后我尝试了几件事:

  • 重启设备
  • 重新安装了该应用
  • 关闭wifi,启用/禁用飞行模式
  • 使用NRF主控制面板检查,相同状态码的相同问题

这一切都没有解决问题。我能够让它再次工作的唯一方法是从“备份和重置”菜单中选择“网络设置重置”。这两款开发手机(Moto G3和三星S6)均采用此选项,在Android 6.0之前尚未见过。

我的问题是:是否有其他人遇到此问题,是否有修复或解决方法?这可能会造成很多麻烦,关闭/开启蓝牙这种情况很常见,并且在飞行模式后也会出现问题。

2 个答案:

答案 0 :(得分:0)

好的,过了一会儿我解决了这个问题。我正在使用NRF ble设备并且无法连接,但我仍然能够连接到TI sensorTag设备。

设备的广告之间存在一些差异,NRF设备未启用某些标志,并且NRF设备也未设置设备名称。更改后,我能够再次连接。原来,必须启用devicename,但可以留空。

似乎在Android 6.0 ble堆栈中,与设备的连接方式发生了变化,如果在蓝牙关闭再打开后没有使用正确的广告设置,设备将无法连接。

答案 1 :(得分:0)

记住蓝牙有4种状态,确保检查它何时已经开启而不是TURNING_ON:

h2

否则你无法连接到gatt服务器......