前言
最近在研究低功耗蓝牙的项目
需求是把设备通过蓝牙传输文件升级
问题
Android Ble与终端设备进行大量数据交互时(如终端升级)发送中状态断开
升级文件大概100多kb 蓝牙mtu最大设置为128+约定位
每100ms发送一次也要发送1,2分钟才可以完成全部发送
在发送过程中 发送10帧以后 蓝牙自动断开 百思不得其解
查阅资料后得知 需要配合ble设置 连接优先级
ble 中requestConnectionPriority这个方法 修改设备连接参数 设置优先级
CONNECTION_PRIORITY_BALANCED :0//默认的值,ble建议的设备连接参数
CONNECTION_PRIORITY_HIGH:1//连接快的值,当需要跟设备进行大的数据传输时设置该值,当传输完成后需要设置为CONNECTION_PRIORITY_BALANCED(如固件升级时可设置为该值)
CONNECTION_PRIORITY_LOW_POWER:2.//低功耗值
解决
在Ble连接成功后 我们可以拿到这个蓝牙的对象和BluetoothGatt
特征
requestConnectionPriority方法就可以使用gatt直接调用
gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_BALANCED);
设置这个优先级后 传输1000多次的蓝牙协议 不再丢失蓝牙连接状态!!