前言
最近在使用蓝牙4.0做单导联心电监测产品时遇到了一个问题。某些机型在蓝牙4.0传递数据的过程中出现丢包(比如最新华为mate10),导致无法展示正确的心电图。后来经过实测,原来是每秒数据量过大(大概975byte/s),但并不是所有的安卓设备都会丢包,这引起了我的注意。赶紧找硬件开发的同事一起分析,最终得出,mate10的蓝牙4.0通讯默认间隙时间较长,通讯频率降低,导致数据丢失。
1、BLE通讯 Connection paramter
Connection paramter有三种状态:
1.BluetoothGatt.CONNECTION_PRIORITY_BALANCED = 0
使用Bluetooth SIG推荐的连接参数, 如果没有请求连接参数更新,这是默认值。
2.BluetoothGatt.CONNECTION_PRIORITY_HIGH = 1
高优先级,低延迟连接。
3.BluetoothGatt.CONNECTION_PRIORITY_LOW_POWER = 2
低功耗,降低数据速率连接参数
随后,就以上模式进行了针对性的资料查找,蓝牙协议分析 给了我很大的帮助。
2、Android设置BLE连接参数
在BluetoothGattCallback抽象类中,处了有我们熟悉的onConnectionStateChange方法:
/**
* Callback indicating when GATT client has connected
提升Android蓝牙4.0传输速率的方法

在开发蓝牙4.0单导联心电监测产品时遇到数据丢包问题,尤其是在华为mate10上。分析发现是蓝牙通讯间隙时间长,导致数据丢失。文章探讨了BLE的连接参数,包括Balanced、High Priority和Low Power模式,并指出Android默认使用High Priority模式。通过BluetoothGatt.requestConnectionPriority方法设置连接参数,并强调在设置参数后需要注意防止系统覆盖导致的参数丢失问题。
最低0.47元/天 解锁文章
701

被折叠的 条评论
为什么被折叠?



