使用32feet蓝牙库的DiscoverDevicesInRange()无法获取已配对在范围内设备信息
解决32feet库无法获取已配对且在范围内蓝牙设备的问题
DiscoverDevicesInRange() 方法仅能检测到处于可发现模式的蓝牙设备,已配对但未开启可发现的设备不会被该方法捕获。要获取这类设备,需通过以下步骤:
获取所有已配对设备
使用BluetoothClient.PairedDevices属性,该属性会返回当前系统中所有已配对的蓝牙设备列表。筛选处于范围内的设备
对每个已配对设备,调用Refresh()方法刷新其状态(确保属性值为最新),再通过InRange属性判断设备是否在当前范围内。
示例代码
BluetoothClient client = new BluetoothClient(); // 获取所有已配对设备 var pairedDevices = client.PairedDevices; foreach (var device in pairedDevices) { // 刷新设备状态,确保InRange属性准确 device.Refresh(); if (device.InRange) { dev.Add(device); list.Add(device); } }
补充说明
- 如果需要同时收集可发现的未配对设备和在线的已配对设备,可以将
DiscoverDevicesInRange()的结果与上述筛选后的配对设备合并,通过设备的DeviceAddress字段去重。 Connected属性可额外判断设备是否当前处于连接状态,按需添加即可。
内容的提问来源于stack exchange,提问作者Yashwanth Lokam
相关产品推荐
相关产品推荐

