q:安卓和 ios 获取到的 deviceid 格式分别是什么样的?
a:
- android 获取到的是蓝牙的 mac 地址。如:
11:22:33:44:55:66
- ios 获取到的是蓝牙的 uuid。如:
00000000-0000-0000-0000-000000000000
q:调用 my.startbluetoothdevicesdiscovery 接口为什么搜索不到附近的蓝牙设备?
a:
- 请确保被搜索设备支持且开启蓝牙功能。
- 请确保被搜索设备已发出广播。
- 若接口传入 services 入参,请确保设备的广播内容中包含 services 参数中的 uuid 值。
q:为什么 my.getbluetoothdevices api 获取到的已发现的蓝牙设备比手机系统设置蓝牙中搜索到的设备多?
a:蓝牙在系统中调用和在支付宝中调用本质上都是调用的系统 api,但是因为调用的时间点不一样,所以扫描的结果会存在差异。
q:为什么设备定位服务未开启时,部分机型调用蓝牙 api 会报错?
a:在安卓端小程序蓝牙功能的使用依赖 gps 定位服务。大概五分之一的安卓手机蓝牙功能的使用都需要依赖 gps 定位服务。为确保蓝牙功能的正常使用,建议安卓设备接入蓝牙前先引导用户打开 gps 定位服务。
q:设备连接失败怎么办?
a:请确保传入的 deviceid 正确,并且设备发出的信号足够强。在信号弱的情况下,可能会出现连接设备失败的可能。
q:设备写/读数据失败怎么办?
a:
- 请确保传入的 deviceid、serviceid、characteristicid 格式正确。
- deviceid 已连接上(可调用 my.onbleconnectionstatechanged 监听连接状态的变化;调用 my.getconnectedbluetoothdevices 获取处于已连接状态的设备。)
- 在连接状态下写入方法。
- 检查 characteristicid 属于此 service。
- 此特征值支持写 / 读。
q:没有收到数据通知怎么办?
a:
- 请确保调用 my.notifyblecharacteristicvaluechange api 开启低功耗蓝牙设备特征值变化时的通知功能,且必填参数传入正确有效。
- 请确认传入的 characteristicid 特征值支持 notify 或 indicate 操作。
- 请确保硬件已发出通知。
- 注意 api 调用流程顺序:即设备连接成功后,再调用 my.notifyblecharacteristicvaluechange 方法。
q:为何事件回调会多次被调用?
a:由于多次匿名函数注册监听了同一事件。所以建议在每次调用 on 方法监听事件之前,先调用 off 方法关闭之前的事件监听。