Android Ble与终端设备进行大量数据交互时(如终端升级)发送中状态断开问题

前言

最近在研究低功耗蓝牙的项目
需求是把设备通过蓝牙传输文件升级

问题

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.//低功耗值

2

解决

在Ble连接成功后 我们可以拿到这个蓝牙的对象和BluetoothGatt特征
requestConnectionPriority方法就可以使用gatt直接调用

 gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_BALANCED);

设置这个优先级后 传输1000多次的蓝牙协议 不再丢失蓝牙连接状态!!

猜你喜欢

转载自blog.csdn.net/Life_s/article/details/131835004
今日推荐