接上一篇(原生微信小程序蓝牙开发(一))
将蓝牙初始化完成后
第二步:搜索周边设备(wx.startBluetoothDevicesDiscovery)
开始搜寻附近的蓝牙外围设备。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
services | Array.<string> | 否 | 要搜索的蓝牙设备主服务的 UUID 列表(支持 16/32/128 位 UUID)。某些蓝牙设备会广播自己的主 service 的 UUID。如果设置此参数,则只搜索广播包有对应 UUID 的主服务的蓝牙设备。建议通过该参数过滤掉周边不需要处理的其他蓝牙设备。 | |
allowDuplicatesKey | boolean | false | 否 | 是否允许重复上报同一设备。如果允许重复上报,则 wx.onBlueToothDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同。 |
interval | number | 0 | 否 | 上报设备的间隔,单位 ms。0 表示找到新设备立即上报,其他数值根据传入的间隔上报。 |
powerLevel | string | medium | 否 | 扫描模式,越高扫描越快,也越耗电。仅安卓微信客户端 7.0.12 及以上支持。 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
官方文档:wx.startBluetoothDevicesDiscovery(Object object)
下面直接上代码:
// 搜索周边
findBlue() {
let that = this;
wx.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
interval: 0,
success: (res) => {
wx.showLoading({
title: "正在搜索设备",
});
// 将蓝牙设备id缓存到本地根据自己项目情况来,我这里需要缓存
let BTdeviceId = wx.getStorageSync("BTdeviceId");
// 第二次连接
if (BTdeviceId) {
// 有缓存设备id为:BTdeviceId可以直接连接
that.connetBlue(BTdeviceId);
} else {
// 第一次连接,没有缓存设备id,去获取设备
that.getBlue();
}
},
fail: (res) => {
wx.hideLoading();
wx.showToast({
title: "搜索周边失败",
icon: "error",
});
},
});
},
注意:
- 当设备第一次连接成功后,第二次可以直接通过该蓝牙是设备id来连接,就不用通过 wx.getBluetoothDevices 再去获取设备。
- 缓存设备id是我这项目用到的,大家根据自身情况截取。