接上一篇(原生微信小程序蓝牙开发(三))
第四步:连接蓝牙(wx.createBLEConnection)
连接蓝牙低功耗设备。
若小程序在之前已有搜索过某个蓝牙设备,并成功建立连接,可直接传入之前搜索获取的 deviceId 直接尝试连接该设备,无需再次进行搜索操作。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
deviceId | string | 是 | 蓝牙设备 id | |
timeout | number | 否 | 超时时间,单位 ms,不填表示不会超时 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
官方文档:wx.createBLEConnection(Object object)
下面上代码:
// 连接蓝牙
connetBlue(deviceId, name) {
let that = this;
wx.createBLEConnection({
deviceId: deviceId, //设备id
success: (res) => {
if (that.data.platform == "android") {
// 连接成功后设置MTU
wx.setBLEMTU({
deviceId: deviceId,
mtu: 512,
success: function (res) {
wx.setStorageSync("BTdeviceId", deviceId);
that.setData({
BTDeviceIds: deviceId,
});
wx.showToast({
title: "连接成功",
icon: "success",
});
that.setData({
deviceId: deviceId,
"setInfo.connetBlue": "连接设备成功",
"setInfo.connected": "已连接",
"setInfo.MTU": "安卓设置MTU成功",
});
// 连接成功后关闭蓝牙搜索
wx.stopBluetoothDevicesDiscovery({
success: (res) => {
// console.log("连接蓝牙成功之后关闭蓝牙搜索", res);
that.setData({
"setInfo.findBlue": "连接成功,关闭蓝牙搜索",
});
},
});
that.getServiceId(); //5.0
},
fail: function (res) {
wx.showToast({
title: "设置MTU失败",
icon: "error",
});
that.setData({
"setInfo.MTU": "安卓设置MTU失败",
});
},
});
} else {
wx.showToast({
title: "设备连接成功",
icon: "success",
});
wx.setStorageSync("BTdeviceId", deviceId);
that.setData({
BTDeviceIds: deviceId,
});
that.setData({
deviceId: deviceId,
"setInfo.connetBlue": "连接设备成功",
"setInfo.connected": "已连接",
});
wx.stopBluetoothDevicesDiscovery({
success: (res) => {
// console.log("连接蓝牙成功之后关闭蓝牙搜索", res);
that.setData({
"setInfo.findBlue": "连接成功,关闭蓝牙搜索",
});
},
});
that.getServiceId(); //5.0
}
},
fail: (res) => {
wx.showToast({
title: "连接失败",
icon: "error",
});
this.initBlue();
},
});
},
注意:
- Android设备需要通过 wx.setBLEMTU 来协商设置蓝牙低功耗的最大传输单元,仅安卓系统 5.1 以上版本有效,iOS 因系统限制不支持所以可以不用设置。
- 所以在连接的时候要注意,需要分 android 和 ios 系统进行连接后的设置
- 连接成功后需要通过 wx.stopBluetoothDevicesDiscovery 关闭蓝牙搜索
有不懂可以直接评论区提问,我们一起学习探索。