蓝牙
优质
小牛编辑
136浏览
2023-12-01
jd.closeBluetoothAdapter(Object object)
关闭蓝牙模块。调用该方法将断开所有已建立的连接并释放系统资源。建议在使用蓝牙流程后,与 jd.openBluetoothAdapter 成对调用。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
0 | ok | 正常 |
-1 | internal error | 内部错误 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
示例代码
jd.closeBluetoothAdapter({
success: function(res) {
console.log(res)
}
})
jd.getBluetoothAdapterState(Object object)
获取本机蓝牙适配器状态。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
discovering | boolean | 是否正在搜索设备 |
available | boolean | 蓝牙适配器是否可用 |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
-1 | internal error | 内部错误 |
0 | ok | 正常 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
示例代码
jd.getBluetoothAdapterState({
success: function(res) {
console.log(res)
}
})
jd.getConnectedBluetoothDevices(Object object)
根据 uuid 获取处于已连接状态的设备。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
services | Array.<string> | 是 | 蓝牙设备主 service 的 uuid 列表 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
devices | Array.<Object> | 搜索到的设备列表 |
res.devices 的结构
属性 | 类型 | 说明 |
---|---|---|
name | string | 蓝牙设备名称,某些设备可能没有 |
deviceId | string | 用于区分设备的 id |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
-1 | internal error | 内部错误 |
0 | ok | 正常 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
示例代码
jd.getConnectedBluetoothDevices({
success: function(res) {
console.log(res)
}
})
jd.onBluetoothAdapterStateChange(function callback)
监听蓝牙适配器状态变化事件
参数
function callback
蓝牙适配器状态变化事件的回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
available | boolean | 蓝牙适配器是否可用 |
discovering | boolean | 蓝牙适配器是否处于搜索状态 |
示例代码
jd.onBluetoothAdapterStateChange(function (res) {
console.log('adapterState changed, now is', res)
})
jd.onBluetoothDeviceFound(function callback)
监听寻找到新设备的事件
参数
function callback
寻找到新设备的事件的回调函数
参数
object res
属性 | 类型 | 说明 |
---|---|---|
devices | Array.<Object> | 新搜索到的设备列表 |
res.devices 的结构
属性 | 类型 | 说明 |
---|---|---|
name | string | 蓝牙设备名称,某些设备可能没有 |
deviceId | string | 用于区分设备的 id |
RSSI | number | 当前蓝牙设备的信号强度 |
advertisData | ArrayBuffer | 当前蓝牙设备的广播数据段中的 ManufacturerData 数据段。 |
advertisServiceUUIDs | Array.<string> | 当前蓝牙设备的广播数据段中的 ServiceUUIDs 数据段 |
localName | string | 当前蓝牙设备的广播数据段中的 LocalName 数据段 |
注意
- 若在 jd.onBluetoothDeviceFound 回调了某个设备,则此设备会添加到 jd.getConnectedBluetoothDevices 接口获取到的数组中。
示例代码
buf2hex: function (buffer) {
return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')
}
jd.onBluetoothDeviceFound(function(res) {
var devices = res.devices;
console.log(that.buf2hex(devices[0].advertisData))
})
注意
- 部分安卓机型需打开位置权限才能正常使用蓝牙功能
jd.openBluetoothAdapter(Object object)
初始化蓝牙模块。iOS 上开启主机/从机模式时需分别调用一次,指定对应的 mode
。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
-1 | internal error | 内部错误 |
0 | ok | 正常 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
object.fail 回调函数返回的 state 参数(仅 iOS)
状态码 | 说明 |
---|---|
0 | 未知 |
1 | 重置中 |
2 | 不支持 |
3 | 未授权 |
4 | 未开启 |
注意
- 其他蓝牙相关 API 必须在 jd.openBluetoothAdapter 调用之后使用。否则 API 会返回错误(errCode=10000)。
- 在用户蓝牙开关未开启或者手机不支持蓝牙功能的情况下,调用 jd.openBluetoothAdapter 会返回错误(errCode=10001),表示手机蓝牙功能不可用。此时小程序蓝牙模块已经初始化完成,可通过 jd.onBluetoothAdapterStateChange 监听手机蓝牙状态的改变,也可以调用蓝牙模块的所有API。
示例代码
jd.openBluetoothAdapter({
success: function(res) {
console.log(res)
}
})
jd.startBluetoothDevicesDiscovery(Object object)
开始搜寻附近的蓝牙外围设备。此操作比较耗费系统资源,请在搜索并连接到设备后调用 jd.stopBluetoothDevicesDiscovery 方法停止搜索。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
services | Array.<string> | 否 | 要搜索的蓝牙设备主 service 的 uuid 列表。某些蓝牙设备会广播自己的主 service 的 uuid。如果设置此参数,则只搜索广播包有对应 uuid 的主服务的蓝牙设备。建议主要通过该参数过滤掉周边不需要处理的其他蓝牙设备。 | |
allowDuplicatesKey | boolean | false | 否 | 是否允许重复上报同一设备。如果允许重复上报,则 jd.onBluetoothDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同。 |
interval | number | 0 | 否 | 上报设备的间隔。0 表示找到新设备立即上报,其他数值根据传入的间隔上报。 |
powerLevel | string | medium | 否 | 扫描模式,越高扫描越快,也越耗电,仅安卓支持。 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.powerLevel 的合法值
值 | 说明 |
---|---|
low | 低 |
medium | 中 |
high | 高 |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
-1 | internal error | 内部错误 |
0 | ok | 正常 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
示例代码
jd.startBluetoothDevicesDiscovery({
services: ['0000'],
success: function(res) {
console.log(res)
}
})
jd.stopBluetoothDevicesDiscovery(Object object)
停止搜寻附近的蓝牙外围设备。若已经找到需要的蓝牙设备并不需要继续搜索时,建议调用该接口停止蓝牙搜索。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
错误
错误码 | 错误信息 | 说明 |
---|---|---|
-1 | internal error | 内部错误 |
0 | ok | 正常 |
10000 | not init | 未初始化蓝牙适配器 |
10001 | not available | 当前蓝牙适配器不可用 |
10002 | no device | 没有找到指定设备 |
10003 | connection fail | 连接失败 |
10004 | no service | 没有找到指定服务 |
10005 | no characteristic | 没有找到指定特征值 |
10006 | no connection | 当前连接已断开 |
10007 | property not support | 当前特征值不支持此操作 |
10008 | system error | 其余所有系统上报的异常 |
10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
10010 | already connect | 已连接 |
10011 | need pin | 配对设备需要配对码 |
10012 | operate time out | 连接超时 |
10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 |
示例代码
jd.stopBluetoothDevicesDiscovery({
success: function (res) {
console.log(res)
}
})