收藏本站
查看: 142|回复: 0

蓝牙适配器接口参数及实例源码3

[复制链接]
发表于 2018-2-8 09:34:42 | 显示全部楼层 |阅读模式
wx.getBluetoothDevices(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
获取在小程序蓝牙模块生效期间所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备。
OBJECT参数说明:
参数
类型
必填
说明

successFunction是成功则返回本机蓝牙适配器状态
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数:
参数
类型
说明

devicesArrayuuid 对应的的已连接设备列表
errMsgString成功:ok,错误:详细信息device 对象
蓝牙设备信息
参数
类型
说明

nameString蓝牙设备名称,某些设备可能没有
deviceIdString用于区分设备的 id
RSSINumber当前蓝牙设备的信号强度
advertisDataArrayBuffer当前蓝牙设备的广播数据段中的ManufacturerData数据段 (注意:vConsole 无法打印出 ArrayBuffer 类型数据)
advertisServiceUUIDsArray当前蓝牙设备的广播数据段中的ServiceUUIDs数据段
localNameString当前蓝牙设备的广播数据段中的LocalName数据段
serviceDataArrayBuffer当前蓝牙设备的广播数据段中的ServiceData数据段
示例代码:
  1. // ArrayBuffer转16进度字符串示例
  2. function ab2hex(buffer) {
  3.   var hexArr = Array.prototype.map.call(
  4.     new Uint8Array(buffer),
  5.     function(bit) {
  6.       return ('00' + bit.toString(16)).slice(-2)
  7.     }
  8.   )
  9.   return hexArr.join('');
  10. }
  11. wx.getBluetoothDevices({
  12.   success: function (res) {
  13.     console.log(res)
  14.     if (res.devices[0]) {
  15.       console.log(ab2hex(res.devices[0].advertisData))
  16.     }
  17.   }
  18. })
复制代码
Bug & Tip
  • tip: Mac系统可能无法获取advertisData及RSSI,请使用真机调试
  • tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中
  • tip: 注意该接口获取到的设备列表为小程序蓝牙模块生效期间所有搜索到的蓝牙设备,若在蓝牙模块使用流程结束后未及时调用 wx.closeBluetoothAdapter 释放资源,会存在调用该接口会返回之前的蓝牙使用流程中搜索到的蓝牙设备,可能设备已经不在用户身边,无法连接。
  • tips: 蓝牙设备在被搜索到时,系统返回的 name 字段一般为广播包中的LocalName字段中的设备名称,而如果与蓝牙设备建立连接,系统返回的 name 字段会改为从蓝牙设备上获取到的GattName。若需要动态改变设备名称并展示,建议使用localName字段。
wx.onBluetoothDeviceFound(CALLBACK)
基础库 1.1.0 开始支持,低版本需做兼容处理
监听寻找到新设备的事件
CALLBACK参数说明:
参数
类型
说明

devicesArray新搜索到的设备列表device 对象
蓝牙设备信息
参数
类型
说明

nameString蓝牙设备名称,某些设备可能没有
deviceIdString用于区分设备的 id
RSSINumber当前蓝牙设备的信号强度
advertisDataArrayBuffer当前蓝牙设备的广播数据段中的ManufacturerData数据段 (注意:vConsole 无法打印出 ArrayBuffer 类型数据)
advertisServiceUUIDsArray当前蓝牙设备的广播数据段中的ServiceUUIDs数据段
localNameString当前蓝牙设备的广播数据段中的LocalName数据段
serviceDataArrayBuffer当前蓝牙设备的广播数据段中的ServiceData数据段
示例代码:
  1. // ArrayBuffer转16进度字符串示例
  2. function ab2hex(buffer) {
  3.   var hexArr = Array.prototype.map.call(
  4.     new Uint8Array(buffer),
  5.     function(bit) {
  6.       return ('00' + bit.toString(16)).slice(-2)
  7.     }
  8.   )
  9.   return hexArr.join('');
  10. }
  11. wx.onBluetoothDeviceFound(function(devices) {
  12.   console.log('new device list has founded')
  13.   console.dir(devices)
  14.   console.log(ab2hex(devices[0].advertisData))
  15. })
复制代码
Bug & Tip
  • tip: Mac系统可能无法获取advertisData及RSSI,请使用真机调试
  • tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中
  • tip: 若在onBluetoothDeviceFound回调了某个设备,则此设备会添加到 wx.getBluetoothDevices 接口获取到的数组中
wx.getConnectedBluetoothDevices(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
根据 uuid 获取处于已连接状态的设备
OBJECT参数说明:
参数
类型
必填
说明

servicesArray是蓝牙设备主 service 的 uuid 列表
successFunction是成功则返回本机蓝牙适配器状态
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数:
参数
类型
说明

devicesArray搜索到的设备列表
errMsgString成功:ok,错误:详细信息device对象
蓝牙设备信息
参数
类型
说明

nameString蓝牙设备名称,某些设备可能没有
deviceIdString用于区分设备的 id
示例代码:
  1. wx.getConnectedBluetoothDevices({
  2.   success: function (res) {
  3.     console.log(res)
  4.   }
  5. })
复制代码
Bug & Tip
  • tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表