uni-app中uni.setBLEMTU功能无法生效
uni-app中uni.setBLEMTU功能无法生效
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.1.15
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:红米K30
页面类型:vue
打包方式:云端
操作步骤:
createConnectdo: function(deviceid) {
let self = this
uni.showLoading({
title: "正在链接..."
})
uni.createBLEConnection({
deviceId: deviceid,
success: function(res) {
console.log(res)
uni.setBLEMTU({
deviceId: deviceid,
mtu: 312,
success: (res) => {
console.log(res)
},
fail: (error) => {
console.log(error)
}
})
self.stopBluetoothDevicesDiscovery()
self.getBluetoothDevicesServices(deviceid)
// self.getBledeviceCharateristics(self.blueList[index])
},
fail: function(res) {
console.log("error", res)
uni.closeBLEConnection({
deviceId: deviceid,
success: function(res) {
self.createConnectdo(deviceid)
}
})
}
})
},
预期结果:
设置uni.setBLEMTU 后可以传输大于20个字节的数据
实际结果:
只能发送20个字节的数据
bug描述:
uni.setBLEMTU 根本不生效 这个问题到底怎么解决? 请官方能尽快看看这个函数吗
更多关于uni-app中uni.setBLEMTU功能无法生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我链接蓝牙成功后加了十秒延迟,返回成功了,但是实际还是没生效,发送超过20个字节的数据硬件收到还是20个字节,手机上的蓝牙调试助手是没问题的
更多关于uni-app中uni.setBLEMTU功能无法生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决了吗?有遇到这个问题了吗?
连接成功后不要立即调, 加个2s延时就好了
连接成功后,延迟一秒调用
setTimeout(function(){
uni.setBLEMTU({
deviceId:that.deviceId,
mtu:30,
success(res) {
console.log(‘设置成功’, res)
},
fail(err) {
console.log(‘设置失败’, err)
}
})
},1000)
为什么我加了延迟也不行,还是报错:setBLEMTU:fail:internal error
// 蓝牙MTU设置
setBLEMTU(deviceId) {
setTimeout(() => {
uni.setBLEMTU({
deviceId: deviceId,
mtu: 512,
success(res) {
console.log("mtu设置成功!ccccc", res);
//console.log(res);
},
fail(err) {
console.log("mtu设置失败:ccccc", err);
//console.log(err);
var ret = '{"code":1,"msg": "蓝牙MTU设置失败"}';
return ret;
},
})
}, 2000)
}
这个时间并不是固定两秒,也可以适当的延长点,还有就是iOS的没有这个
因为512不能生效,测试下来最大只能设置为247
在uni-app中,uni.setBLEMTU功能在某些Android设备上可能无法生效,这通常与设备硬件或系统限制有关。根据您提供的信息,代码逻辑正确,但红米K30(Android 10)可能不支持自定义MTU大小,或系统底层限制了MTU的修改。
首先,检查uni.setBLEMTU的成功回调输出,确认是否返回了实际设置的MTU值。如果成功回调被触发但MTU未改变,说明设备或蓝牙模块不支持该操作。许多Android设备对MTU有固定限制,无法通过API调整。
其次,尝试在连接蓝牙设备后延迟调用uni.setBLEMTU,因为某些设备需要在连接完全建立后才能处理MTU请求。示例修改:
uni.createBLEConnection({
deviceId: deviceid,
success: function(res) {
setTimeout(() => {
uni.setBLEMTU({
deviceId: deviceid,
mtu: 312,
success: (res) => {
console.log('MTU设置结果:', res);
},
fail: (error) => {
console.error('MTU设置失败:', error);
}
});
}, 500);
// 其他操作...
}
});


