Android低功耗蓝牙开发问题总结

Android 专栏收录该内容
18 篇文章 0 订阅

1.app收不到蓝牙返回的数据。

  需要把写的特征值的通知权限设置为true

bluetoothGatt.setCharacteristicNotification(characteristicF2, true);

2.断开蓝牙连接。

  有时候会发现调用disconnect断开蓝牙连接时无法搜索到此设备,当连接断开后要调closeGatt释放资源,不用调disconnect,也      不  要下次复用之前的gatt来reconnect,因为有的手机上重连可能会存在问题,比如重连后死活发现不了service。这种情况下,      最   好只要断开连接就close gatt,下次连接时打开全新的gatt,这样就可以发现service了。

3.蓝牙返回数据问题。

   蓝牙返回数据为byte[]的形式,当里面的值超过了byte的取值范围时就会出现问题,比如255就变成了-1,别担心,我们可以直接     这个数据把它转换成十六进制(其实蓝牙返回的就是十六进制数据)再把十六进制数据转换成十进制就变为原来的数据了。

4.蓝牙连接问题。

  一个主设备(例如Android手机)可以同时连接多个从设备(一般为6个,例如智能硬件。超过就连接不上了),一个从设备只能被一个    主设备连接,一旦从设备连接上主设备,就停止广播,断开连接则继续广播。在任何时刻都只能最多一个设备在尝试建立连接。      如果同时对多个蓝牙设备发起建立Gatt连接请求。如果前面的设备连接失败了,则后面的设备请求会被永远阻塞住,不会有任何      连   接回调。所以建议:如果要对多个设备发起连接请求,最好是一个接一个的顺序同步请求管理。

5.蓝牙发送数据问题。

  对蓝牙设备的操作不能并行,只能串行,即每次都要在收到上一个操作的回调后才能继续下一个操作。但是断开连接例外,断开      连接要马上closeGatt,不用等任务队列中的其他操作了。而且要给所有正在执行或者准备执行的任务都cancel。

6.多次刷新扫描后无法搜索到蓝牙设备。

   有时候我们频繁调用 bluetoothAdapter.startLeScan 大概5次以后就无法扫描到设备了,原因是频繁操作,需要在调用                   bluetoothAdapter.stopLeScan最少2秒后再进行bluetoothAdapter.startLeScan操作。

 

 

 

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值