蓝牙功能当手机的蓝牙是关闭再开启的时候,数据一直不停的更新?
// pages/unlock/bluetoothlock/bluetoothlock.js
Page({
/**
* 页面的初始数据
*/
data: {
showNav: true,
bluetoothStatus: false
},
// 初始化蓝牙设备
openBluetoothAdapter() {
//监听是否打开了蓝牙设备
let that = this
wx.openBluetoothAdapter({
success: (res) => {
console.log('蓝牙设备成功', res)
if (res.errMsg == "openBluetoothAdapter:ok") {
// 监听蓝牙设备状态
that.startBluetoothDevicesDiscovery()
}
},
fail: (res) => {
console.log('蓝牙设备失败', res)
if (res.errCode === 10001) {
// 监听蓝牙是否开启了状态
that.onBluetoothAdapterStateChange() // 在这里一直重复的调用数据
}
}
})
},
//监听蓝牙是否开启了状态
onBluetoothAdapterStateChange() {
let that = this
wx.onBluetoothAdapterStateChange(function(res) {
console.log('是否开启了蓝牙', res)
//判断蓝牙适配器是否处于搜索状态
// 判断设配蓝牙适配器是否可用
if (res.available) {
that.setData({
bluetoothStatus: true
})
that.startBluetoothDevicesDiscovery()
}
})
},
// 搜寻附近的蓝牙外围设备
startBluetoothDevicesDiscovery() {
let that = this
wx.startBluetoothDevicesDiscovery({
services: [],
allowDuplicatesKey: false,
success(res) {
console.log('是否处于搜索状态', res)
if (res.errCode == 0) {
that.stopBluetoothDevicesDiscovery()
}
},
fail(res) {
console.log(res)
// that.stopBluetoothDevicesDiscovery()
}
})
},
// 停止外围设备搜索,当搜索完毕要停止
stopBluetoothDevicesDiscovery() {
let that = this
wx.stopBluetoothDevicesDiscovery({
success(res) {
console.log('停止设备', res)
if (res.errMsg == 'stopBluetoothDevicesDiscovery:ok') {
that.getBluetoothDevices()
}
}
})
},
// 获取蓝牙设备列表
getBluetoothDevices() {
function ab2hex(buffer) {
var hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('');
}
wx.getBluetoothDevices({
success: function(res) {
console.log(res)
if (res.errMsg == 'getBluetoothDevices:ok') {
}
if (res.devices[0]) {
console.log(ab2hex(res.devices[0].advertisData))
}
}
})
},
//断开所有已建立的连接并释放系统资源建议在使用蓝牙流程后,wx.openBluetoothAdapter 成对调用
closeBluetoothAdapter() {
wx.closeBluetoothAdapter({
success(res) {
console.log(res)
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
this.openBluetoothAdapter()
},
})