1.手机连接蓝牙
2.uni.getConnectedBluetoothDevices小程序根据主服务UUID获取已连接蓝牙的deviceId
3.uni.getBLEDeviceServices获取该deviceId对应的服务
- 发布:2022-03-22 10:45
- 更新:2024-04-25 15:24
- 阅读:904
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 21H2
HBuilderX类型: 正式
HBuilderX版本号: 3.3.13
第三方开发者工具版本号: 1.05.2108130
基础库版本号: 未知
项目创建方式: HBuilderX
操作步骤:
预期结果:
获取到正确的完整的蓝牙服务列表
获取到正确的完整的蓝牙服务列表
实际结果:
安卓获取到4个服务,IOS获取到1个服务
安卓获取到4个服务,IOS获取到1个服务
bug描述:
uni.getBLEDeviceServices() 安卓获取到四个服务其中包括1812(HID服务),但IOS只获取到一个180F(电池数据服务)
// 根据 "蓝牙设备主 service 的 uuid 列表" 获取处于已连接状态的设备
getConnectedBluetoothDevices(services) {
let _this = this
console.log('gcbd:', services.split(','))
let serviceUUIDList = services.split(',')
let platform = this.getSystemPlatform()
if (platform == 'android') {
uni.getConnectedBluetoothDevices({
// services: ["00001812-0000-1000-8000-00805F9B34FB"],
success(res) {
_this.msg = "getConnectedBluetoothDevices success:" + res.devices
console.log(res)
_this.bluetoothList = res.devices
// 成功获取到已连接状态的设备 关闭Discovery
_this.stopBluetoothDevicesDiscovery()
},
fail(res) {
_this.msg = "getConnectedBluetoothDevices fail:" + res.errMsg
console.log(res)
}
})
} else if (platform == 'ios') {
uni.getConnectedBluetoothDevices({
services: ["00001812-0000-1000-8000-00805F9B34FB"],
success(res) {
_this.msg = "getConnectedBluetoothDevices success:" + res.devices
console.log(res)
_this.bluetoothList = res.devices
// 成功获取到已连接状态的设备 关闭Discovery
_this.stopBluetoothDevicesDiscovery()
},
fail(res) {
_this.msg = "getConnectedBluetoothDevices fail:" + res.errMsg
console.log(res)
}
})
}
},
// 获取设备服务列表
getBLEDeviceServices(deviceId) {
let _this = this
this.selectDeviceId = deviceId
setTimeout(() => {
uni.getBLEDeviceServices({
deviceId,
success(res) {
_this.msg += "getBLEDeviceServices success:" + res.services
_this.services = res.services
console.log(res.services.toString())
let uuids = []
res.services.forEach(item => {
uuids.push(item.uuid)
})
console.log(uuids.toString())
// 成功获取到服务列表 关闭Discovery
_this.stopBluetoothDevicesDiscovery()
},
fail(res) {
_this.msg += "getBLEDeviceServices fail:" + res.errMsg
console.log(res)
_this.services = []
}
}, 200)
})
},
(ps:getConnectedBluetoothDevices虽然API文档写的services是必传项,但安卓传services就会出现任何回调都没出发的情况,IOS不传services返回的devices列表为空)
2 个回复
1***@qq.com
兄弟解决了吗;我的也是ios跟安卓获取服务数量不一致
l***@qq.com
我压根没办法获取到已连接的蓝牙数据