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

3 回复

有该现象的代码在附件zip中,官方大神有空测试一下。

更多关于uni-app uni.closeBLEConnection进入success后实际并未与蓝牙设备断开连接的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我也遇到了相同的问题。我们测试中,ios app很丝滑的可以断开连接。安卓设备经常无法断开。

在uni-app中调用uni.closeBLEConnection进入success回调但设备未实际断开是常见问题,通常与蓝牙协议栈的异步特性有关。根据你提供的华为Android 9环境,可能的原因和解决方案如下:

  1. 蓝牙协议延迟:success回调仅表示断开指令已发送到系统蓝牙栈,不代表设备立即断开。Android系统处理蓝牙指令存在延迟,特别是华为设备对蓝牙协议栈有定制优化,可能导致状态同步延迟。

  2. 设备端缓存连接:部分蓝牙设备会主动维持连接状态,即使主机发起断开,设备端可能因低功耗策略延迟响应。建议在代码中添加状态轮询:

uni.onBLEConnectionStateChange(res => {
  console.log('连接状态变化:', res.connected ? '已连接' : '已断开')
})
  1. 时序问题:检查是否在断开连接后立即执行了其他蓝牙操作(如重新连接)。建议添加延时:
uni.closeBLEConnection({ deviceId })
setTimeout(() => {
  // 后续操作
}, 1000)
回到顶部