From 64216eaa7515ecaabe6ef1484efc60248cd4d97f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=BE=AE=E4=B8=80=E7=AC=91?= <709648985@qq.com> Date: Wed, 1 Apr 2026 09:42:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/BleHelper.js | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/utils/BleHelper.js b/utils/BleHelper.js index 6795947..6ac8be8 100644 --- a/utils/BleHelper.js +++ b/utils/BleHelper.js @@ -630,20 +630,38 @@ class BleHelper { } return new Promise((resolve, reject) => { - if (this.data.isOpenBlue) { + const runInit = () => { + this.CheckBlue().then((res) => { + return init(); + }).then(resolve).catch((ex) => { + console.error("异常:", ex); + reject(ex); + }); + }; + if (!this.data.isOpenBlue) { + runInit(); + return; + } + // 已打开过仍须向系统确认可用:关蓝牙再开后 isOpenBlue 可能未及时被置 false,或状态回调未送达 + if (typeof uni.getBluetoothAdapterState !== 'function') { resolve(); return; } - - this.CheckBlue().then((res) => { - // console.log("res=", res) - return init(); - }).then(resolve).catch((ex) => { - console.error("异常:", ex); - reject(ex); + uni.getBluetoothAdapterState({ + success: (info) => { + this.data.available = !!info.available; + if (info.available) { + resolve(); + return; + } + this.data.isOpenBlue = false; + runInit(); + }, + fail: () => { + this.data.isOpenBlue = false; + runInit(); + } }); - - }); } @@ -865,6 +883,9 @@ class BleHelper { if (!state.available) { //蓝牙状态不可用了,将所有设备标记为断开连接 + // 系统关蓝牙后原生 BLE 适配器已销毁;若仍认为 isOpenBlue=true,OpenBlue 会跳过重开, + // 再开蓝牙后无法 createBLEConnection / 一直报 10001 适配器不可用 + this.data.isOpenBlue = false; console.log("蓝牙模块不可用了,将所有设备标记为断开连接"); this.data.connectingDevices = {}; //清空连接锁 this.data.LinkedList.filter((v) => {