文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

openBluetoothAdapter初始化蓝牙适配器的方法

2023-06-26 09:01

关注

这篇文章主要介绍“openBluetoothAdapter初始化蓝牙适配器的方法”,在日常操作中,相信很多人在openBluetoothAdapter初始化蓝牙适配器的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”openBluetoothAdapter初始化蓝牙适配器的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

蓝牙适配器接口


基础库版本 1.1.0 开始支持,低版本需做兼容处理

iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持

wx.openBluetoothAdapter(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

初始化蓝牙适配器

OBJECT参数说明:

参数类型必填说明
successFunction成功则返回成功初始化信息
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

wx.openBluetoothAdapter({  success: function (res) {console.log(res)  }})

Bug & Tip

  1. tip: 由于系统的问题,目前仅在 mac 版的开发工具上支持蓝牙调试

  2. tip: 基础库版本 1.1.0 开始支持,低版本需做兼容处理

wx.closeBluetoothAdapter(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

关闭蓝牙模块。调用该方法将断开所有已建立的链接并释放系统资源

OBJECT参数说明:

参数类型必填说明
successFunction成功则返回成功关闭模块信息
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

wx.closeBluetoothAdapter({  success: function (res) {console.log(res)  }})

wx.getBluetoothAdapterState(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

获取本机蓝牙适配器状态

OBJECT参数说明:

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

success返回参数:

参数类型说明
discoveringBoolean是否正在搜索设备
availableBoolean蓝牙适配器是否可用
errMsgString成功:ok,错误:详细信息
示例代码:
wx.getBluetoothAdapterState({  success: function (res) {console.log(res)  }})

wx.onBluetoothAdapterStateChange(CALLBACK)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

监听蓝牙适配器状态变化事件

CALLBACK参数说明:

参数类型说明
availableboolean蓝牙适配器是否可用
discoveringboolean蓝牙适配器是否处于搜索状态

示例代码:

wx.onBluetoothAdapterStateChange(function(res) {  console.log(`adapterState changed, now is`, res)})

wx.startBluetoothDevicesDiscovery(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

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

OBJECT参数说明:

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

services参数说明:某些蓝牙设备会广播自己的主 service 的 uuid。如果这里传入该数组,那么根据该 uuid 列表,只搜索有这个主服务的设备。

success返回参数:

参数类型说明
errMsgstring成功:ok,错误:详细信息
isDiscoveringboolean当前蓝牙适配器是否处于搜索状态

示例代码:

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

wx.stopBluetoothDevicesDiscovery(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

停止搜寻附近的蓝牙外围设备。请在确保找到需要连接的设备后调用该方法停止搜索。

OBJECT参数说明:

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

success返回参数:

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

adapterState

蓝牙适配器状态信息

参数类型说明
discoveringboolean是否正在搜索设备
availableboolean蓝牙适配器是否可用

示例代码:

wx.stopBluetoothDevicesDiscovery({  success: function (res) {console.log(res)  }})

wx.getBluetoothDevices(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

获取所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备

OBJECT参数说明:

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

success返回参数:

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

device 对象

蓝牙设备信息

参数类型说明
namestring蓝牙设备名称,某些设备可能没有
deviceIdstring用于区分设备的 id
RSSIint当前蓝牙设备的信号强度
advertisDataArrayBuffer当前蓝牙设备的广播内容(注意:vConsole 无法打印出 ArrayBuffer 类型数据)

示例代码:

wx.getBluetoothDevices({  success: function (res) {console.log(res)  }})

Bug & Tip

  1. tip: Mac系统可能无法获取advertisDataRSSI,请使用真机调试

  2. tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中

wx.getConnectedBluetoothDevices(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

根据 uuid 获取处于已连接状态的设备

OBJECT参数说明:

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

success返回参数:

参数类型说明
devicesArray搜索到的设备列表
errMsgstring成功:ok,错误:详细信息

device对象

蓝牙设备信息

参数类型说明
namestring蓝牙设备名称,某些设备可能没有
deviceIdstring用于区分设备的 id

示例代码:

wx.getConnectedBluetoothDevices({  success: function (res) {console.log(res)  }})

Bug & Tip

  1. tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中

wx.onBluetoothDeviceFound(CALLBACK)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

监听寻找到新设备的事件

CALLBACK参数说明:

参数类型说明
devicesArray新搜索到的设备列表

device对象

参数类型说明
deviceIdstring蓝牙设备 id,参考 device 对象
namestring蓝牙设备名称,参考 device 对象
RSSIint当前蓝牙设备的信号强度
advertisDataArrayBuffer当前蓝牙设备的广播内容(注意:vConsole 无法打印出 ArrayBuffer 类型数据)

示例代码:

wx.onBluetoothDeviceFound(function(devices) {  console.log('new device list has founded')  console.dir(devices)})

Bug & Tip

  1. tip: Mac系统可能无法获取advertisDataRSSI,请使用真机调试

  2. tip: 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。因此deviceId不能硬编码到代码中

低功耗蓝牙接口

wx.createBLEConnection(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

连接低功耗蓝牙设备

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 getDevices 接口
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

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

示例代码:

wx.createBLEConnection({  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  success: function (res) {console.log(res)  }})

wx.closeBLEConnection(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

断开与低功耗蓝牙设备的连接

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 getDevices 接口
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

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

示例代码:

wx.closeBLEConnection({  success: function (res) {console.log(res)  }})

wx.getBLEDeviceServices(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

获取蓝牙设备所有 service(服务)

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 getDevices 接口
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

参数类型说明
servicesarray设备服务列表
errMsgstring成功:ok,错误:详细信息

service对象

蓝牙设备service(服务)信息

参数类型说明
uuidstring蓝牙设备服务的 uuid
isPrimaryboolean该服务是否为主服务

示例代码:

wx.getBLEDeviceServices({  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  success: function (res) {console.log('device services:', res.services)  }})

wx.getBLEDeviceCharacteristics(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

获取蓝牙设备所有 characteristic(特征值)

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 device 对象
serviceIdstring蓝牙服务 uuid
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

参数类型说明
characteristicsarray设备特征值列表
errMsgstring成功:ok,错误:详细信息

characteristic对象

蓝牙设备characteristic(特征值)信息

参数类型说明
uuidstring蓝牙设备特征值的 uuid
propertiesobject该特征值支持的操作类型

properties对象

参数类型说明
readboolean该特征值是否支持 read 操作
writeboolean该特征值是否支持 write 操作
notifyboolean该特征值是否支持 notify 操作
indicateboolean该特征值是否支持 indicate 操作

示例代码:

wx.getBLEDeviceCharacteristics({  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取  serviceId: serviceId,  success: function (res) {console.log('device getBLEDeviceCharacteristics:', res.characteristics)  }})

wx.readBLECharacteristicValue(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持read才可以成功调用,具体参照 characteristic 的 properties 属性

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 device 对象
serviceIdstring蓝牙特征值对应服务的 uuid
characteristicIdstring蓝牙特征值的 uuid
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

参数类型说明
characteristicobject设备特征值信息
errMsgstring成功:ok,错误:详细信息

characteristic对象

蓝牙设备characteristic(特征值)信息

参数类型说明
characteristicIdstring蓝牙设备特征值的 uuid
serviceIdobject蓝牙设备特征值对应服务的 uuid
valueArrayBuffer蓝牙设备特征值对应的二进制值(注意:vConsole 无法打印出 ArrayBuffer 类型数据)

示例代码:

// 必须在这里的回调才能获取wx.onBLECharacteristicValueChange(function(characteristic) {  console.log('characteristic value comed:', characteristic)})wx.readBLECharacteristicValue({  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取  serviceId: serviceId,  // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取  characteristicId: characteristicId,  success: function (res) {console.log('readBLECharacteristicValue:', res.characteristic.value)  }})

Bug & Tip

  1. tip: 并行调用多次读写接口存在读写失败的可能性。

  2. tip:read接口读取到的信息需要在onBLECharacteristicValueChange方法注册的回调中获取。

wx.writeBLECharacteristicValue(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持write才可以成功调用,具体参照 characteristic 的 properties 属性

tips: 并行调用多次读写接口存在读写失败的可能性

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 device 对象
serviceIdstring蓝牙特征值对应服务的 uuid
characteristicIdstring蓝牙特征值的 uuid
valueArrayBuffer蓝牙设备特征值对应的二进制值(注意:vConsole 无法打印出 ArrayBuffer 类型数据)
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

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

示例代码:

// 这里的回调可以获取到 write 导致的特征值改变wx.onBLECharacteristicValueChange(function(characteristic) {  console.log('characteristic value changed:', characteristic)})// 向蓝牙设备发送一个0x00的16进制数据let buffer = new ArrayBuffer(1)let dataView = new DataView(buffer)dataView.setUint8(0, 0)wx.writeBLECharacteristicValue({  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取  serviceId: serviceId,  // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取  characteristicId: characteristicId,  // 这里的value是ArrayBuffer类型  value: buffer,  success: function (res) {console.log('writeBLECharacteristicValue success', res.errMsg)  }})

wx.notifyBLECharacteristicValueChanged(OBJECT)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

启用低功耗蓝牙设备特征值变化时的 notify 功能。注意:必须设备的特征值支持notify才可以成功调用,具体参照 characteristic 的 properties 属性

另外,必须先启用notify才能监听到设备 characteristicValueChange 事件

OBJECT参数说明:

参数类型必填说明
deviceIdstring蓝牙设备 id,参考 device 对象
serviceIdstring蓝牙特征值对应服务的 uuid
characteristicIdstring蓝牙特征值的 uuid
statebooleantrue: 启用 notify; false: 停用 notify
successFunction成功则返回本机蓝牙适配器状态
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数:

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

示例代码:

wx.notifyBLECharacteristicValueChanged({  state: true, // 启用 notify 功能  // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  deviceId: deviceId,  // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取  serviceId: serviceId,  // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取  characteristicId: characteristicId,  success: function (res) {console.log('notifyBLECharacteristicValueChanged success', res.errMsg)  }})

wx.onBLEConnectionStateChanged(CALLBACK)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

监听低功耗蓝牙连接的错误事件,包括设备丢失,连接异常断开等等。

CALLBACK参数说明:

参数类型说明
deviceIdstring蓝牙设备 id,参考 device 对象
connectedboolean连接目前的状态

示例代码:

wx.onBLEConnectionStateChanged(function(res) {  // 该方法回调中可以用于处理连接意外断开等异常情况  console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)})

wx.onBLECharacteristicValueChange(CALLBACK)


基础库版本 1.1.0 开始支持,低版本需做兼容处理

监听低功耗蓝牙设备的特征值变化。必须先启用notify接口才能接收到设备推送的notification。

CALLBACK参数说明:

参数类型说明
deviceIdstring蓝牙设备 id,参考 device 对象
serviceIdstring特征值所属服务 uuid
characteristicIdstring特征值 uuid
valueArrayBuffer特征值最新的值(注意:vConsole 无法打印出 ArrayBuffer 类型数据)

示例代码:

wx.onBLECharacteristicValueChange(function(res) {  console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)})

蓝牙错误码(errCode)列表

错误码说明备注
0ok正常
10000not init未初始化蓝牙适配器
10001not available当前蓝牙适配器不可用
10002no device没有找到指定设备
10003connection fail连接失败
10004no service没有找到指定服务
10005no characteristic没有找到指定特征值
10006no connection当前连接已断开
10007property not support当前特征值不支持此操作
10008system error其余所有系统上报的异常
10009system not supportAndroid 系统特有,系统版本低于 4.3 不支持BLE
10010no descriptor没有找到指定描述符

到此,关于“openBluetoothAdapter初始化蓝牙适配器的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯