这个模块做了2周,找了很多资料文档,看示例看别人的demo,最后发现其实还是得靠自己,不吐槽了,开正文。 我实现的小程序模块自动连接(根据需要,可改手动),是在小程序初始化完成时开始自动调用执行。 大致流程:
* 1、 开启蓝牙适配
* 2、 获取蓝牙适配器状态,判断设备蓝牙是否可用。
* 3、 判断蓝牙适配器可用时开启扫描蓝牙设备和开启获取已连接的蓝牙设备
* 4、 如果开启扫描蓝牙设备失败5s后自动再次开启扫描
* 5、 开启扫描蓝牙设备成功后开启监听已扫描的设备
* 6、 如果已扫描到的新设备含FeiZhi名(个人产品需要)的设备则开始连接该设备
* 7、 开启获取已连接蓝牙设备开启获取设备成功后判断以获取的设备名包含FeiZhi(个人产品需要)字符串的设备则开始连接该设备
* 8、 开始获取已连接蓝牙设备没有成功获取到已连接的蓝牙设备5s后自动重新开启获取。
* 9、 开始连接某设备时停止扫描设备,停止循环获取已连接设备。
* 10、连接成功后停止扫描设备,停止循环获取已连接设备。
1、app.js的onLaunch() 方法里中调用开启连接 this.startConnect();弹出提示框,开启适配,如果失败提示设备蓝牙不可用,同时开启蓝牙适配器状态监听。
startConnect: function () {
var that = this;
wx.showLoading({
title: '开启蓝牙适配'
});
wx.openBluetoothAdapter({
success: function (res) {
console.log("初始化蓝牙适配器");
console.log(res);
that.getBluetoothAdapterState();
},
fail: function (err) {
console.log(err);
wx.showToast({
title: '蓝牙初始化失败',
icon: 'success',
duration: 2000
})
setTimeout(function () {
wx.hideToast()
}, 2000)
}
});
wx.onBluetoothAdapterStateChange(function (res) {
var available = res.available;
if (available) {
that.getBluetoothAdapterState();
}
})
}
2、初始化蓝牙适配器成功,调用this.getBluetoothAdapterState() 获取本机蓝牙适配器状态,判断是否可用,available为false则因为用户没有开启系统蓝牙。同时判断程序还没有开始搜索蓝牙设备,调用this.startBluetoothDevicesDiscovery();开始扫描附近的蓝牙设备,同时调用this.getConnectedBluetoothDevices() 开启获取本机已配对的蓝牙设备。
getBluetoothAdapterState: function () {
var that = this;
wx.getBluetoothAdapterState({
success: function (res) {
var available = res.available,
discovering = res.discovering;
if (!available) {
wx.showToast({
title: '设备无法开启蓝牙连接',
icon: 'success',
duration: 2000
})
|