Android 蓝牙4.0连接几次后出现连接不了,搜索不到服务的情况
2017-05-22 12:52
316 查看
最近做手机蓝牙与BLE设备的智能项目。遇到一个问题,记录下来。方便以后。
出现的情况是:手机蓝牙与蓝牙设备连接几次,交互信息后,无法再次连接与搜索到服务,需重启手机蓝牙或者关闭APP后,再次启动APP,才能再次连接设备。
上网查找了不少资料。才找资料。非常感谢此博文提供的参考解决方案http://bbs.eeworld.com.cn/thread-438571-1-1.html
/*多次创建gatt连接对象的直接结果是创建过6个以上gatt后就会再也连接不上任何设备,原因应该是Android中对BLE限制了同时连接的数量为6个
* 解决办法是在每一次重新连接时都执行一次gatt.close();关闭上一个连接。
* 有人说为什么不在gatt.disconnect();后加一条gatt.close();呢,原因是如果立即执行gatt.close();会导致gattCallback无法收到STATE_DISCONNECTED的状态。
* 当然,最好的办法是在gattCallback收到STATE_DISCONNECTED后再执行gatt.close();,这样逻辑上会更清析一些。
*/
比如我的项目:
出现的情况是:手机蓝牙与蓝牙设备连接几次,交互信息后,无法再次连接与搜索到服务,需重启手机蓝牙或者关闭APP后,再次启动APP,才能再次连接设备。
上网查找了不少资料。才找资料。非常感谢此博文提供的参考解决方案http://bbs.eeworld.com.cn/thread-438571-1-1.html
/*多次创建gatt连接对象的直接结果是创建过6个以上gatt后就会再也连接不上任何设备,原因应该是Android中对BLE限制了同时连接的数量为6个
* 解决办法是在每一次重新连接时都执行一次gatt.close();关闭上一个连接。
* 有人说为什么不在gatt.disconnect();后加一条gatt.close();呢,原因是如果立即执行gatt.close();会导致gattCallback无法收到STATE_DISCONNECTED的状态。
* 当然,最好的办法是在gattCallback收到STATE_DISCONNECTED后再执行gatt.close();,这样逻辑上会更清析一些。
*/
比如我的项目:
if (mBluetoothGatt != null) { mBluetoothGatt.close(); //LogUtil.info("-------------关闭mBluetoothGatt"); } //连接前先关闭之前 的 mBluetoothGatt = device.connectGatt(context, false, mGattCallback);
相关文章推荐
- Android 蓝牙4.0连接几次后出现连接不了,搜索不到服务的情况
- Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能
- 服务都启用的情况下XP远程桌面还是出现“此计算机无法连接到远程计算机”
- Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务
- android:蓝牙4.0的搜索、连接及数据传输(真实可用)——(一)
- stm32串口下载出现端口搜索不到或者一直处于连接状态的问题解决办法
- 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大
- 在PL/SQL中连接ORACLE时,出现:ora-12154:无法解析指定的服务名
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- SQL 2005服务启动失败(在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误)
- WSS (Windows SharePoint Services) "该搜索请求无法连接到搜索服务" 错误解决
- 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。
- 修复MOSS2007备份还原后搜索服务出现的问题(续)
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 出现这种情况可能是因为所有池连接都已被使用并已达到池的最大值
- MOSS2007备份还原后搜索服务出现的问题
- RMAN 下执行startup 命令出现"ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务" 错误