uni-app 蓝牙搜索Api uni.getBluetoothDevices 获取到的deviceId不正确
uni-app 蓝牙搜索Api uni.getBluetoothDevices 获取到的deviceId不正确
产品分类
uniapp/App
示例代码:
uni.getBluetoothDevices({
success: (res) => {
if (res.devices) {
res.devices.forEach(item => {
console.log(item);
});
}
},
});
操作步骤:
调用uni.getBluetoothDevices
预期结果:
deviceId正确,正确deviceId: FC:58:FA:65:28:27
实际结果:
deviceId错误,错误的deviceId: FD:58:FA:65:28:27
后几位都正确,开头的FD/FC不对
bug描述:
蓝牙搜索:uni.getBluetoothDevices搜索到的deviceId不正确
正确的mac地址(deviceId):FC:58:FA:65:28:27
uni.getBluetoothDevices获得的deviceId: FD:58:FA:65:28:27
开发环境信息
项目 | 信息 |
---|---|
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 15.0.1 (24A348) |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.29 |
手机系统 | Android |
手机系统版本号 | Android 9.0 |
手机厂商 | 小米 |
手机机型 | MIX 2 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
我碰到一样的问题了 请问下您最后是怎么解决的呢
请问怎么解决的呢
在处理 uni-app
中的蓝牙搜索 API uni.getBluetoothDevices
时,如果发现获取到的 deviceId
不正确,通常可能涉及到几个潜在的问题:设备兼容性问题、API 使用不当、或者是蓝牙权限及状态管理问题。下面我将提供一个基本的代码案例,帮助你确保 API 使用正确,并添加一些额外的调试信息来帮助定位问题。
基本代码案例
首先,确保你的应用已经请求并获得了蓝牙权限,并且设备蓝牙已开启。以下是一个简化的代码示例,用于展示如何正确使用 uni.getBluetoothDevices
:
// 检查蓝牙适配器是否可用
uni.openBluetoothAdapter({
success: function (res) {
console.log('蓝牙适配器已启用', res);
// 开始搜索蓝牙设备
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: function (discoveryRes) {
console.log('开始搜索蓝牙设备', discoveryRes);
// 设置一个定时器,每隔几秒获取一次搜索结果
const interval = setInterval(() => {
uni.getBluetoothDevices({
success: function (devicesRes) {
console.log('获取到的蓝牙设备列表:', devicesRes.devices);
if (devicesRes.devices.length > 0) {
devicesRes.devices.forEach(device => {
console.log('设备ID:', device.deviceId, '设备名称:', device.name);
});
// 停止搜索
clearInterval(interval);
uni.stopBluetoothDevicesDiscovery({
success: function () {
console.log('停止搜索蓝牙设备');
}
});
}
},
fail: function (err) {
console.error('获取蓝牙设备列表失败:', err);
clearInterval(interval);
}
});
}, 3000); // 每3秒获取一次
},
fail: function (err) {
console.error('搜索蓝牙设备失败:', err);
}
});
},
fail: function (err) {
console.error('蓝牙适配器启用失败:', err);
}
});
调试建议
- 日志记录:在每一步操作后都添加日志记录,这有助于你理解 API 调用的顺序和结果。
- 设备兼容性:确保在多种设备上测试你的应用,因为不同设备的蓝牙实现可能有所不同。
- 权限管理:检查并确保应用具有访问蓝牙的权限,特别是在 Android 上,你可能需要在
manifest.json
中声明相关权限。 - 错误处理:在
fail
回调中添加详细的错误处理逻辑,以便更好地了解失败的原因。
通过上述代码和调试建议,你应该能够更有效地诊断和解决 uni.getBluetoothDevices
获取到的 deviceId
不正确的问题。