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为一个单位);

解决
在Ble连接成功后 我们可以拿到这个蓝牙的对象和BluetoothGatt特征
requestConnectionPriority方法就可以使用gatt直接调用
gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);
设置这个优先级后 传输1000多次的蓝牙协议 不再丢失蓝牙连接状态!!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)