外观
BLE 连接和读写的完整流程是什么?
标准回答
典型流程是检查权限与蓝牙状态 → 扫描 → 连接 GATT → 发现服务 → 找到特征 → 按协议读写或订阅通知 → 断开并释放。
关键机制
- Service 是一组能力,Characteristic 是可读写或通知的数据点,Descriptor 提供描述和配置。UUID 用来定位这些对象。
- 订阅通知通常既要启用本地通知,也要按特征能力写入 CCCD。连接成功并不代表业务会话已经就绪。
- 有回调的 GATT 操作应按队列串行推进,检查状态与超时;分包依据协商 MTU、操作类型及协议约定,不能硬编码所有情况都为 20 字节。
通俗例子
给灯设置亮度:先完成服务发现和通知订阅,再发送带请求编号的命令。写入成功后,仍需根据设备响应或状态上报确认亮度真正改变。
易混淆点
GATT 写成功不是业务执行成功;notify 通知也不等同于业务层可靠确认。连接失败要区分权限、距离、协议和设备忙。
参考资料
内容来源
- Android 技术札记 · 原条目
ble