uni-app uni.closeBLEConnection进入success后实际并未与蓝牙设备断开连接
uni-app uni.closeBLEConnection进入success后实际并未与蓝牙设备断开连接
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Win11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:Win11
HBuilderX类型:正式
HBuilderX版本号:4.75
手机系统:Android
手机系统版本号:Android 9.0
手机厂商:华为
手机机型:BND-AL00
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
App下载地址或H5网址: https://www.pgyer.com/jqzm
示例代码:
更多关于uni-app uni.closeBLEConnection进入success后实际并未与蓝牙设备断开连接的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有该现象的代码在附件zip中,官方大神有空测试一下。
更多关于uni-app uni.closeBLEConnection进入success后实际并未与蓝牙设备断开连接的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我也遇到了相同的问题。我们测试中,ios app很丝滑的可以断开连接。安卓设备经常无法断开。
在uni-app中调用uni.closeBLEConnection进入success回调但设备未实际断开是常见问题,通常与蓝牙协议栈的异步特性有关。根据你提供的华为Android 9环境,可能的原因和解决方案如下:
-
蓝牙协议延迟:success回调仅表示断开指令已发送到系统蓝牙栈,不代表设备立即断开。Android系统处理蓝牙指令存在延迟,特别是华为设备对蓝牙协议栈有定制优化,可能导致状态同步延迟。
-
设备端缓存连接:部分蓝牙设备会主动维持连接状态,即使主机发起断开,设备端可能因低功耗策略延迟响应。建议在代码中添加状态轮询:
uni.onBLEConnectionStateChange(res => {
console.log('连接状态变化:', res.connected ? '已连接' : '已断开')
})
- 时序问题:检查是否在断开连接后立即执行了其他蓝牙操作(如重新连接)。建议添加延时:
uni.closeBLEConnection({ deviceId })
setTimeout(() => {
// 后续操作
}, 1000)

