BLE设备发送超过20个字节

本文探讨了Android蓝牙低功耗(BLE)协议下数据传输的限制,即最大数据负载为20字节的问题,并提供了修改MTU以提高数据传输效率的方法。通过调整MTU值,实现在Android 5.0及以上版本中发送超过20字节数据的能力。
摘要由CSDN通过智能技术生成

一:业务场景: 蓝牙设备发送超过20个字节 ,手机端接收数据接收不到。硬件不分包发送,搞得有点奇怪,没有超过20个字节的能接收到数据。这是Android 底层的限制。

* Android 底层貌似做了限制只能接受20个字节
* There are four basic operations for moving data in BLE: read, write, notify, and indicate.
* The BLE protocol specification requires that the maximum data payload size for these
* operations is 20 bytes, or in the case of read operations, 22 bytes.
* BLE is built for low power consumption, for infrequent short-burst data transmissions.
* Sending lots of data is possible, but usually ends up being less efficient than classic
* Bluetooth when trying to achieve maximum throughput.
*/

1.硬件超过20个字节分包发送  ,这个 都是比较合理的做法,客户端在组包

2.硬件不分包 ,一次发送超过20个字节。这个好像是不能超过512个字节 ,双方协议规定

二:来一张图片展示一下

 

 三:解决方法

/**
 * 改变BLE默认的单次发包、收包的最大长度,用于android 5.0及以上版本
 * @param mtu
 * @return
 */
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static boolean requestMtu(int mtu){   //配置数据的大小   我配置的是512
    if (mBluetoothGatt != null) {
        return mBluetoothGatt.requestMtu(mtu);
    }
    return false;
}

这个方法在蓝牙连接成功后调用

总结:

经过测试是能接收到数据,小米手机7.0可以接收 ,其他手机我没有测试 。

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值