我也遇到了,在前一个页面调用wx.closeBluetoothAdapter后,在另外一个页面调用wx.openBluetoothAdapter和wx.startBluetoothDevicesDiscovery会搜索不出蓝牙设备来
closeBluetoothAdapter关闭成功后再次初始化蓝牙导致搜索不到设备[视频] 刷新蓝牙设备:按钮会触发init()事件,init事件执行步骤:关闭蓝牙释放资源=>初始化蓝牙适配器=>开始搜索. BUG复现:小程序打开后扫码跳转页面第一次搜索蓝牙设备瞬间搜索完毕,往后每次重复扫码跳转第一次或前几次都无法搜索到蓝牙设备,如果搜索到设备后,点击刷新按钮每次又能搜索到设备 BUG=>蓝牙在初始化完毕的情况下,跳转页面释放资源后再次初始化搜索啥都搜不到 import {ble} from "./ble.js"; data:{ // 搜到的设备 devices:[] }, onLoad() { wx.offBluetoothDeviceFound() wx.onBluetoothDeviceFound(res => { this.setData({devices: this.data.devices.concat(res.devices)}) }) this.init() }, // 初始化蓝牙并搜素 init() { // 先关闭蓝牙释放资源 ble.close().then(() => { // 打开初始化蓝牙 return ble.open() }).then(() => { // 清空设备数组并开始搜素设备 this.data.devices = [] // 开始搜索蓝牙设备 return ble.startSearch() }) } // ble.js ==================================== export const ble = { // 初始化蓝牙模块 open() { return new Promise((resolve, reject) => { wx.openBluetoothAdapter({success: resolve, fail: reject}) }) }, // 关闭蓝牙模块 close() { return new Promise((resolve, reject) => { wx.closeBluetoothAdapter({success: resolve, fail: reject}) }) }, // 开始搜索蓝牙设备 startSearch() { return new Promise((resolve, reject) => { wx.startBluetoothDevicesDiscovery({ success: resolve, fail: reject, }) }) }, }
2021-06-02