my.startbluetoothdevicesdiscovery(object object)
allowduplicateskey 和 interval参数,从支付宝客户端 10.0.20 版本开始支持。 该操作比较耗费系统资源,请在搜索并连接到设备后调用 my.stopbluetoothdevicesdiscovery api 停止搜索。
小程序开发者工具: 不支持。ide上暂不支持,请在真机上测试。
主体: 企业支付宝小程序 、 个人支付宝小程序
开始搜索附近的蓝牙外围设备。
请使用 my.onbluetoothdevicefound 注册监听函数,接收搜索发现的蓝牙设备信息。
object object
查看示例
属性 | 类型 | 默认值 | 必填 | 描述 |
---|---|---|---|---|
allowduplicateskey | boolean | - | 否 | 是否允许重复上报同一设备。如果允许重复上报,则 my.onbluetoothdevicefound 方法会多次上报同一设备,但是 rssi 值会有不同 |
interval | number | - | 否 | 上报设备的间隔,单位:毫秒(ms)。如果不设置该参数值则找到新设备立即上报,设置该参数值则根据传入的时间间隔上报 |
services | array |
- | 是 | 蓝牙设备主 service 的 uuid 列表 |
success | function | - | 否 | 调用成功的回调函数 |
fail | function | - | 否 | 调用失败的回调函数 |
complete | function | - | 否 | 调用结束的回调函数(调用成功、失败都会执行) |
fail 回调的参数为 object,error
属性为错误码,errormessage
属性为错误消息。
错误码的详细信息请查看蓝牙 api 错误码对照表。
代码示例
扫码体验
my.startbluetoothdevicesdiscovery axml 代码
my.startbluetoothdevicesdiscovery js 代码
<button type="primary" ontap="startbluetoothdevicesdiscovery">开始搜索button>
page({
data: {
deviceid: "",
name: "ipad",
},
// 扫描蓝牙设备
startbluetoothdevicesdiscovery() {
my.startbluetoothdevicesdiscovery({
success: () => {
my.onbluetoothdevicefound((res) => {
var devicearray = res.devices;
for (var i = devicearray.length - 1; i >= 0; i--) {
var deviceobj = devicearray[i];
// 通过设备名称或者广播数据匹配目标设备,然后记录deviceid后面使用。
if (deviceobj.name == this.data.name) {
my.alert({ content: "目标设备被找到" });
my.offbluetoothdevicefound();
this.setdata({
deviceid: deviceobj.deviceid,
});
break;
}
}
});
},
fail: (error) => {
console.error('启动扫描失败: ', json.stringify(error));
// 10019 是安卓端专有错误码,当设备没开启定位权限,会出现10019错误码。可使用 showauthguide api 引导用户开启定位权限
if (error.error === 10019) {
my.showauthguide({
authtype: "lbs",
success: (res) => {
console.log(res.shown);
},
fail: (error) => {
console.error('showauthguide failed: ', json.stringify(error));
},
});
}
},
});
},
// 停止扫描
stopbluetoothdevicesdiscovery() {
my.stopbluetoothdevicesdiscovery({
success: (res) => {
my.offbluetoothdevicefound();
my.alert({ content: "操作成功!" });
},
fail: (error) => {
console.error('停止扫描失败: ', json.stringify(error));
},
});
},
});
-
tip安卓下部分机型需要有位置权限才能搜索到设备,否则会报错(错误码 10019)。