Andriod8.0扫描不到BLE设备的原因

     昨天尝鲜升级了一次手机系统,把系统升级到了Android8.0。今天测试的时候意外发现扫描不到自己的蓝牙小设备(假如定义为设备A)。

描述如下:

1. Android8.0 + nrf connect扫描不到设备A,但是可以正常扫描到苹果手表和小米手环2.

2. Android8.0+系统蓝牙也扫描不到设备A,但是可以正常扫描到苹果手表和小米手环2.

3. Android(其他版本)+ nrf connect可以扫描到设备A和苹果手表和小米手环2.

4. ios+ nrf connect可以扫描到设备A和苹果手表和小米手环2. 苹果手表和小米手环2比设备A多了一行:Service UUID(和incomplete List of 16-bit service UUID值一样)和Service Data

5. ios+ nrf connect能看到设备A是“non-connectable”.  Manufacturer Data: N/A


解决方式:

扫描不到说明广播包和Adv response阶段出了问题。检查advertData[]里面的值时发现,设定的字段的长度和实际不符。

修改后,ios+ nrf connect能看到设备A是“Connectable”.  Manufacturer Data也正常显示了。

此时Android8.0 + nrf connect也能扫描到设备A了。


总结:

Andriod8.0在系统级,对BLE的广播包做了检查(长度和字段),一旦没有通过检查,就认为是非法设备。索性系统级就不显示该设备。


另外蓝牙5.0的新特性如下http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=508186&typeid=35

对Service UUID和Service UUID的描述如https://www.cnblogs.com/smart-mutouren/p/5882038.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值