Android 6.0 在关闭蓝牙并重新打开后将不再连接到 BLE 设备
Android 6.0 won't connect to BLE device anymore after turning bluetooth off and back on again
我写了一个扫描蓝牙智能设备的应用程序,你可以从列表中选择一个,连接到它并交换一些数据。一切顺利,直到 Android 6.0。
首先,我修复了新的权限系统,以便应用程序在运行时请求位置权限,以便能够扫描设备。应用程序像以前一样工作,但在关闭蓝牙并重新打开后,应用程序将不再连接,但总是 returns 断开连接状态,gatt 回调中的状态代码为 133。
然后我尝试了几件事:
- 重启设备
- 重新安装了应用程序
- 关闭wifi,开启/关闭飞行模式
- 已使用 NRF 主控制面板进行检查,同样的问题和相同的状态码
这都没有解决问题。我能够让它再次工作的唯一方法是菜单 "Backup & reset" 中的选项 "Network Settings Reset"。此处提供的两款开发手机(Moto G3 和三星 S6)都具有此选项,在 Android 6.0.
之前从未见过
我的问题是:是否有其他人遇到此问题?是否有解决方法或解决方法?这可能会带来很多麻烦,关闭/打开蓝牙很常见,并且在飞行模式后也会出现问题。
好的,过了一会儿我解决了这个问题。我正在使用 NRF ble 设备,无法连接,但我仍然能够连接到 TI sensorTag 设备。
设备的广告之间存在一些差异,一些标志未为 NRF 设备启用,而且 NRF 设备没有设置设备名称。更改此设置后,我能够再次连接。原来devicename必须启用,但可以留空。
似乎在 Android 6.0 ble 堆栈中与设备的连接方式发生了变化,如果在蓝牙关闭后没有使用正确的广告设置,则设备将无法再连接并再次。
记住蓝牙有 4 种状态,确保检查它何时已经打开而不是 TURNING_ON:
if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_ON) {
...
}
否则您还不能连接到 gatt 服务器...
我写了一个扫描蓝牙智能设备的应用程序,你可以从列表中选择一个,连接到它并交换一些数据。一切顺利,直到 Android 6.0。
首先,我修复了新的权限系统,以便应用程序在运行时请求位置权限,以便能够扫描设备。应用程序像以前一样工作,但在关闭蓝牙并重新打开后,应用程序将不再连接,但总是 returns 断开连接状态,gatt 回调中的状态代码为 133。
然后我尝试了几件事:
- 重启设备
- 重新安装了应用程序
- 关闭wifi,开启/关闭飞行模式
- 已使用 NRF 主控制面板进行检查,同样的问题和相同的状态码
这都没有解决问题。我能够让它再次工作的唯一方法是菜单 "Backup & reset" 中的选项 "Network Settings Reset"。此处提供的两款开发手机(Moto G3 和三星 S6)都具有此选项,在 Android 6.0.
之前从未见过我的问题是:是否有其他人遇到此问题?是否有解决方法或解决方法?这可能会带来很多麻烦,关闭/打开蓝牙很常见,并且在飞行模式后也会出现问题。
好的,过了一会儿我解决了这个问题。我正在使用 NRF ble 设备,无法连接,但我仍然能够连接到 TI sensorTag 设备。
设备的广告之间存在一些差异,一些标志未为 NRF 设备启用,而且 NRF 设备没有设置设备名称。更改此设置后,我能够再次连接。原来devicename必须启用,但可以留空。
似乎在 Android 6.0 ble 堆栈中与设备的连接方式发生了变化,如果在蓝牙关闭后没有使用正确的广告设置,则设备将无法再连接并再次。
记住蓝牙有 4 种状态,确保检查它何时已经打开而不是 TURNING_ON:
if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_ON) {
...
}
否则您还不能连接到 gatt 服务器...