admin管理员组

文章数量:1550652

GATT
GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。中心设备和外设需要双向通信的话,唯一的方式就是建立 GATT 连接。

整体流程

  • 扫描设备
  • 连接设备
  • 蓝牙通信
    • 发送notify
    • 收到数据,放入queue中(其他线程对queue中数据进行解析)
    • write写数据(每次最多20个字节,过了就会自动分包)
  • 断开连接
  • 释放资源

indicate和notify的区别
indicate是一定会收到数据,notify有可能会丢失数据。indicate底层封装了应答机制,如果没有收到中央设备的回应,会再次发送直至成功;而notify不会有central收到数据的回应,可能无法保证数据到达的准确性,优势是速度快。

Android BLE 蓝牙开发入门
Android BLE开发详解和FastBle源码解析

注意事项

  • 判断当前Android设备是否支持BLE。Android 4.3以后系统中加入了蓝牙BLE的功能
  • android 4.3 支持ble,并只支持作为central设备
  • android 5.0 支持作为peripheral设备
  • 系统6.0后需要位置权限(动态申请权限),否则无法使用
  • 频繁扫描、停止扫描会出现问题(没有找到合适的办法,只能考虑app上交互控制,有个链接说需要硬件优化)

本文标签: androidBLE