微信小程序实现搜索周边蓝牙设备(startBluetoothDevicesDiscovery)

2018年08月09日 14:20 | 12938次浏览 作者原创 版权保护

本章节已经开始牵涉到硬件蓝牙设备了,首先咱们还是按照老规矩,贴出微信官方文档对于搜索周边蓝牙设备的接口startBluetoothDevicesDiscovery的使用说明:


wx.startBluetoothDevicesDiscovery(OBJECT)

开始搜寻附近的蓝牙外围设备。注意,该操作比较耗费系统资源,请在搜索并连接到设备后调用 stop 方法停止搜索。

OBJECT参数说明:

参数类型必填说明
servicesArray蓝牙设备主 service 的 uuid 列表
allowDuplicatesKeyBoolean是否允许重复上报同一设备, 如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同
intervalNumber上报设备的间隔,默认为0,意思是找到新设备立即上报,否则根据传入的间隔上报
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

services参数说明:某些蓝牙设备会广播自己的主 service 的 uuid。如果这里传入该数组,那么根据该 uuid 列表,只搜索发出广播包有这个主服务的蓝牙设备,建议主要通过该参数过滤掉周边不需要处理的其他蓝牙设备。

success返回参数:

参数类型说明
errMsgString成功:ok,错误:详细信息

示例代码:

// 以微信硬件平台的蓝牙智能灯为例,主服务的 UUID 是 FEE7。传入这个参数,只搜索主服务 UUID 为 FEE7 的设备
wx.startBluetoothDevicesDiscovery({
  services: ['FEE7'],
  success: function (res) {
    console.log(res)
  }
})

---------------------------------------------------华丽的分割线------------------------------------------------

根据官方文档说明,代码实现如下:

1,打开微信小程序开发工具,编写lanya.wxml  实际上此页面类似于html页面一样,代码如下

<view class="content">
<view>日志信息:
<textarea style='border:1px solid #ccc'>
{{msg}}
</textarea>
</view>

<button type="primary" class="button" bindtap="lanya1">1初始化蓝牙适配器</button>
<button type="primary" class="button" bindtap="lanya2">2本机蓝牙适配状态</button>
<button type="primary" class="button" bindtap="lanya3">3搜索周边蓝牙设备</button>

</view>

如上述代码所示,我们新增了一个按钮,名字叫搜索周边蓝牙设备,绑定的js函数为lanya3

2、lanya.js代码,也就是上述lanya3函数实现小程序startBluetoothDevicesDiscovery接口代码

//搜索设备
lanya3: function () {
var that = this;
wx.startBluetoothDevicesDiscovery({
services: ['FEE7'],
success: function (res) {
that.setData({
msg: "搜索设备" + JSON.stringify(res),
})
console.log('搜索设备返回' + JSON.stringify(res))
}
})
}

上述代码,我们在成功调用小程序搜索周边设备接口设置了也没日志,同时也设置后台打印日志

注意:services参数,我用的设备刚好UUID为"FEE7",如果不知道的话,services这个参数可以删除掉,这样就是搜索周边所有蓝牙设备了

打开手机微信app,然后点击微信小程序开发工具头部的预览按钮,会出现一个二维码,用微信app扫描此二维码

效果如下

如上图所示,返回参数都为ok,记得,把你的硬件蓝牙设备给打开,否则会搜不到。


lanya.js的全部实现代码如下:用户可直接全部复制到项目中

// pages/lanya/lanya.js www.vxzsk.com V型知识库原创
Page({

/**
   * 页面的初始数据
   */
data: {
},

/**
   * 生命周期函数--监听页面加载
   */
onLoad: function (options) {
},

/**
   * 生命周期函数--监听页面初次渲染完成
   */
onReady: function () {
},

/**
   * 生命周期函数--监听页面显示
   */
onShow: function () {
},

/**
   * 生命周期函数--监听页面隐藏
   */
onHide: function () {
},

/**
   * 生命周期函数--监听页面卸载
   */
onUnload: function () {
},

/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
onPullDownRefresh: function () {
},

/**
   * 页面上拉触底事件的处理函数
   */
onReachBottom: function () {
},

/**
   * 用户点击右上角分享
   */
onShareAppMessage: function () {
},
// 初始化蓝牙适配器
lanya1: function () {
var that = this;
wx.openBluetoothAdapter({
success: function (res) {
console.log('初始化蓝牙适配器返回' + JSON.stringify(res))
//页面日志显示
that.setData({
msg: JSON.stringify(res)
})
},
fail:function(res){
console.log('初始化蓝牙适配器失败' + JSON.stringify(res))
}
})
},
// 本机蓝牙适配器状态
lanya2: function () {
var that = this;
wx.getBluetoothAdapterState({
success: function (res) {
//页面日志显示
that.setData({
msg: "本机蓝牙适配器状态" + "/" + JSON.stringify(res.errMsg) + "==是否可用:" +  res.available

})
},
fail:function(res){
//页面日志显示
that.setData({
msg: "本机蓝牙适配器状态" + "/" + JSON.stringify(res.errMsg) + "==是否可用:" + res.available


})

}
})
},
//搜索设备
lanya3: function () {
var that = this;
wx.startBluetoothDevicesDiscovery({
services: ['FEE7'],
success: function (res) {
that.setData({
msg: "搜索设备" + JSON.stringify(res),
})
console.log('搜索设备返回' + JSON.stringify(res))
}
})
}
})
//V型知识库原创 www.vxzsk.com



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1856.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程