Android 单个指定蓝牙设备通讯流程

1、初始化蓝牙基础信息
1) 设备名称 - 用于区分其他设备(有可能会设置多个名称)
2) 设备秘钥 - 用于获取通讯秘钥(每次APP与设备建立连接时重新获取)

2、扫描设备
1)获取BluetoothManager、BluetoothAdapter
2)通过BluetoothAdapter对象的startLeScan方法搜索周围设备,
在onLeScan回调方法中对设备过滤(既要过滤非己方设备、又要过滤重复设备)
onLeScan方法参数解释: device - 设备实例, rssi - 信号强度(负值), scanRecord - 设备提供的广播数据内容

3、与设备建立连接
1)先根据Mac地址创建设备实例: BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress);
2)建立连接:device.connectGatt()
3)连接成功后,需要根据特定的UUID找到需要的服务(一个蓝牙设备可以有多个服务,每个服务都有自己的特征值)

---------byte数据交互------------
4、获取通讯秘钥
1)向设备发送“设备秘钥”
2)从设备获取“通讯秘钥”

5、发送指令与设备通讯
1)指令包含:
数据头 - 一般是固定值,
随机数 - 用于加密,
通讯秘钥,
命令字 - 具体的操作,

2) 指令一byte[]形式发送
如:byte[0]表示数据头,
byte[6]表示命令字,
byte[10-14]表示操作时间戳,

---------byte数据交互------------

6、断开连接

关键点: 数据加解密、CRC8计算、CRC16计算
CRC8计算:数据包共16位,其中第16位表示前15位数据经过CRC8计算后得到的校验值

你可能感兴趣的:(Android,蓝牙,蓝牙通讯)