在 Windows Phone 8.1 上连接和断开蓝牙 BLE
Posted
技术标签:
【中文标题】在 Windows Phone 8.1 上连接和断开蓝牙 BLE【英文标题】:Connect and disconnect from Bluetooth BLE on Windows Phone 8.1 【发布时间】:2015-01-12 11:59:48 【问题描述】:我有一台由 Windows Phone 8.1 和 android 手机操作的设备。由于这些手机中只有一部可以随时使用该设备,因此我们需要在使用完毕后立即断开与该设备的连接。
在 Android 上,我们使用的库可以连接和断开连接,但在 Windows Phone 8.1 上,我似乎只能连接,我找不到告诉手机与设备断开连接的方法。我必须手动取消手机与设备的配对,
有人可以断开配对的蓝牙设备吗?如果是,怎么做?
谢谢!
【问题讨论】:
可以编辑您的问题以显示您使用连接到 BLE 设备的代码吗? 我不确定这是否可行。不幸的是,Windows BLE API 非常有限,不如 Android(或者,我认为是 ios)功能齐全。我没有在电话上这样做,但 8.1 WinRT API 是相同的 AFAIK,你得到的只是GattDevice
。您可以关闭它,但 Windows 会自行管理连接。关闭设备所做的只是断开您自己的进程与 Windows 设备的连接,而不是实际的 BLE 设备。
这就是我所害怕的,彼得... :(
【参考方案1】:
在 GattDeviceService 上调用 Dispose(),确保所有 GattCharacteristic 对象为 null,并且不要从 GattCharacteristic 注销 ValueChanged 事件处理程序。 最后调用 GC.Collect() (微软告知这是 WP8.1 的 bug,应该在 Win10 中修复)
【讨论】:
在 Windows 10 上它现在可以工作了。 WP8.1仍然没有好的解决方案 你对此有什么参考吗? 这不是官方解决方案。经过数小时的调试,这正是我们想出的让这个东西正常工作的方法。 相关:social.msdn.microsoft.com/Forums/windowsdesktop/en-US/…【参考方案2】:如果您通过StreamSocket 进行通信,Dispose() 调用将断开连接。
根据您的代码,using() 语句可能是最优雅的方式。
【讨论】:
不,我正在使用 GattDevice 项目 :(【参考方案3】:这可能对 win8 应用没有帮助,但对于使用 UWP 应用的任何人来说,本文有助于配对和取消配对: https://msdn.microsoft.com/en-us/windows/uwp/devices-sensors/pair-devices
它的要点是你调用 DeviceInformation.Pairing.UnpairAsync 方法。 https://msdn.microsoft.com/library/windows/apps/windows.devices.enumeration.deviceinformationpairing.unpairasync
调用该方法会弹出窗口对话框,询问用户是否允许取消配对设备。
【讨论】:
以上是关于在 Windows Phone 8.1 上连接和断开蓝牙 BLE的主要内容,如果未能解决你的问题,请参考以下文章
我无法将套接字 io 与 windows phone 8.1 C# 连接
Sqlite,数据库连接和windows phone 8.1(silverlight)
如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?