在Windows Phone 8.1上连接和断开蓝牙BLE。

5
我有一个设备,可以由Windows Phone 8.1和Android手机操作。因为这些手机只能有一个同时连接设备,所以我们需要在使用完成后立即断开连接。
在安卓上,我们使用的库可以连接和断开连接,但是在Windows Phone 8.1上,我好像只能连接,找不到告诉手机从该设备断开连接的方法。我必须手动取消配对。
有没有人能够断开已配对的蓝牙设备?如果有,请问如何操作?
谢谢!

1
你可以编辑你的问题,展示一下你用来连接BLE设备的代码吗? - Richard Ev
1
我不确定这是否可能。不幸的是,Windows BLE API非常有限,远不如Android(或者我猜想的iOS)功能齐全。我没有在手机上做过这个,但据我所知,8.1 WinRT API是相同的,你只能得到GattDevice。你可以关闭它,但Windows会自己管理连接。关闭设备所做的一切只是断开您自己的进程与Windows设备的连接,而不是实际的BLE设备。 - Peter Duniho
这就是我担心的,Peter... :( - Ravenheart
3个回答

2

在 GattDeviceService 上调用 Dispose(),确保所有 GattCharacteristic 对象为 null,并且不要从 GattCharacteristic 注销 ValueChanged 事件处理程序。 最后调用 GC.Collect()(Microsoft 告知这是 WP8.1 中的一个 bug,应在 Win10 中修复)。


在Windows 10上它现在可以工作了。但是对于WP8.1仍然没有好的解决方案。 - Niklas Hoesl
你有关于那个的任何参考资料吗? - gliderkite
这不是官方解决方案。这只是我们在经过数小时的调试后找到的让这个东西工作的方法。 - Niklas Hoesl
相关链接:https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/9eae39ff-f6ca-4aa9-adaf-97450f2b4a6c/disconnect-bluetooth-low-energy - David Lechner

0
如果你正在通过 StreamSocket 进行通信,调用 Dispose() 将会断开连接。
根据你的代码,using() 语句可能是最优雅的方法。

不,我正在使用GattDevice项目 :( - Ravenheart

0

这篇文章可能对于Win8应用程序没有帮助,但是对于任何正在开发UWP应用程序的人来说,此文章有关配对和取消配对都是非常有用的: https://msdn.microsoft.com/zh-cn/windows/uwp/devices-sensors/pair-devices

其实它的要点是调用DeviceInformation.Pairing.UnpairAsync方法。 https://msdn.microsoft.com/library/windows/apps/windows.devices.enumeration.deviceinformationpairing.unpairasync

调用该方法会弹出Windows对话框询问用户是否允许取消配对设备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接