在 Windows 10 上获取已连接的蓝牙设备列表

Posted

技术标签:

【中文标题】在 Windows 10 上获取已连接的蓝牙设备列表【英文标题】:Getting a list of already connected bluetooth devices on Windows 10 【发布时间】:2019-01-02 16:50:03 【问题描述】:

这个问题可能很愚蠢,也许第一个被接受的答案会解释为什么这不是预期的用例。

是否可以获得已经连接到机器的BT设备列表?

这台机器是 Win10 机器,使用“纯”C#/.Net 会很好,虽然也有 32 英尺。 BT 设备不是 BTLE(低能量)。

设备已通过正常的 Windows 例程连接,目标是获取有关设备和连接状态的某种状态信息。

附录:我搜索了很多,大多数结果都在谈论如何配对和/或连接,Win7、8 和 10 的不同功能让我很困惑。这就是为什么我这次不想包含任何代码:-)

我看到 Getting a list of bluetooth devices in a C# .NET framework 并阅读了答案和 cmets。它显然不是关于 UWP 而是 CLI,而且它似乎不起作用。即使是 32 英尺,因为对 DiscoverDevicesInRange 的建议 API 调用会查找范围内且处于“可发现模式”的设备。尚未连接。在问题本身中,它声明它应该清楚地与 Windows.Devices.Bluetooth 一起使用,但我找不到任何真正有效的东西。

【问题讨论】:

Getting a list of bluetooth devices in a C# .NET framework的可能重复 太晚了....已经被标记了。 在 UWP 中应该是可能的,因为我一直在研究 UWP 中提供的 Wifi API,我们可以得到所有可用接入点的列表。 docs.microsoft.com/en-us/windows/desktop/api/bluetoothapis/… 致所有人:感谢您的提示和答案。我会尝试这些并报告回来,可能需要一周(节假日!):-) 【参考方案1】:

您可以使用DeviceInformation.FindAllAsync(String)方法找到已配对或已连接的蓝牙设备,您可以指定字符串为BluetoothDevice.GetDeviceSelectorFromPairingState(true)BluetoothDevice.GetDeviceSelectorFromConnectionStatus(BluetoothConnectionStatus.Connected),如下代码。

//Paired bluetooth devices
DeviceInformationCollection PairedBluetoothDevices =
       await DeviceInformation.FindAllAsync(BluetoothDevice.GetDeviceSelectorFromPairingState(true));
//Connected bluetooth devices
DeviceInformationCollection ConnectedBluetoothDevices =
       await DeviceInformation.FindAllAsync(BluetoothDevice.GetDeviceSelectorFromConnectionStatus(BluetoothConnectionStatus.Connected));

更多信息可以看话题Enumerate devices和官方DeviceEnumerationAndPairing样例。

【讨论】:

如何识别设备是否已关闭或不在可发现范围内

以上是关于在 Windows 10 上获取已连接的蓝牙设备列表的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式判断蓝牙设备是不是已连接?

如何在 Windows 上连接蓝牙设备?

UWP蓝牙查找设备耗时较长

如何在 Windows 10 上控制蓝牙 LE 连接?

如何获取已连接蓝牙设备的 rssi 值

蓝牙LE设备在Windows 10 v1709中停止连接