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

前言

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

问题

Android Ble与终端设备进行大量数据交互时(如终端升级)发送中状态断开
升级文件大概100多kb 蓝牙mtu最大设置为128+约定位
每100ms发送一次也要发送1,2分钟才可以完成全部发送

在发送过程中 发送10帧以后 蓝牙自动断开 百思不得其解
查阅资料后得知 需要配合ble设置 连接优先级

ble 中requestConnectionPriority这个方法 修改设备连接参数 设置优先级

CONNECTION_PRIORITY_BALANCED :0
默认的值,ble建议的设备连接参数
对应的连接时间间隔取值范围为:30ms–50ms(24–40个单位)。
对应的从机延时取值为:0ms(0个单位)
对应的监控超时取值为:20s();

CONNECTION_PRIORITY_HIGH:1
连接快的值,当需要跟设备进行大的数据传输时设置该值,当传输完成后需要设置为
对应的连接时间间隔取值范围为:11.25ms–15ms(9–12个单位)。
对应的从机延时取值为:0ms(0个单位)
对应的监控超时取值为:20s();

CONNECTION_PRIORITY_LOW_POWER:2
低功耗值
对应的连接时间间隔取值范围为:100ms–125ms(80–100个单位)。
对应的从机延时取值为:2.5ms(2个单位)
对应的监控超时取值为:20s(以10ms为一个单位);

2

解决

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

 gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕氏春秋i

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值