BLE 绑定流程


绑定就是主机与从机相互保存认证信息Long Term Key (LTK)等信息。

问题1:从机跟主机配对过一次后,会不会再次配对;
答:从机跟主机配对过后,相互保存绑定的认证信息,当再次连接时,主机先会去检查当前从机是否绑定过,如果有,就不会在发起配对了。
即使是从机更改了配对密码也是一样,因为再次连接加密认证时是用保存好的绑定信息(LTK)来做加密认证的,而不是配对密码,配对密码只是临时密码(TK),用来在配对时产生LTK的,如果不用配对,更改配对密码是没有任何意义的;


绑定流程图


### Bluedroid 绑定流程解析 #### 1. Bluedroid架构概述 Bluedroid 是 Android 和其他物联网设备中的蓝牙堆栈实现之一。其主要功能模块包括 HAL (硬件抽象层),控制器接口,主机驱动程序以及应用程序编程接口(API)[^2]。 #### 2. 初始化阶段 当系统启动时,在 `SystemServer` 进程初始化期间会加载并配置蓝牙服务。这涉及到创建 Bluetooth Manager Service 并将其注册到系统的ServiceManager中[^2]。 ```java // frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java public class BluetoothAdapter { private static final String TAG = "BluetoothAdapter"; // ... other code ... } ``` #### 3. 设备发现过程 一旦蓝牙适配器被激活,就可以发起设备扫描操作来查找附近可连接的蓝牙设备。此过程中涉及 GATT (通用属性协议) 的使用,用于读取远程设备的服务和特征值[^1]。 #### 4. 配对与绑定 对于找到的目标设备,可以通过调用 API 方法来进行配对请求。如果成功,则会在本地存储该设备的信息作为已知信任设备的一部分,并建立长期的安全关联键(SLK)以供后续快速重新连接。 ```java // Example of initiating bonding programmatically mDevice.createBond(); ``` #### 5. 数据交换机制 完成绑定之后,两个设备之间可以利用 L2CAP 或 RFCOMM 协议进行数据传输;而在 BLE 中则更多采用 ATT/GATT 来管理特性及其描述符之间的交互[^3]。 #### 6. 断开连接处理 最后需要注意的是,在不再需要保持活动链接的情况下应当主动断开现有连接,释放资源以便于节省电量和其他有限资源。 ```java // Disconnecting from a bonded device bluetoothGatt.disconnect(); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值