【问题标题】:Not receiving Bluetooth events when adding/removing devices on Windows在 Windows 上添加/删除设备时未收到蓝牙事件
【发布时间】:2017-05-18 09:56:46
【问题描述】:

我正在尝试创建一个蓝牙管理器类型类。该课程将搜索在我的应用程序中列入白名单的所有已配对和未配对的蓝牙设备,并将它们添加到设备的内部列表中。

我使用以下代码进行此操作:

_deviceWatcher = DeviceInformation.CreateWatcher(_selector, 
                     null, DeviceInformationKind.AssociationEndpoint);

以及订阅以下事件:

_deviceWatcher.Added += _deviceWatcher_Added;
_deviceWatcher.Removed += _deviceWatcher_Removed;
_deviceWatcher.EnumerationCompleted += _deviceWatcher_EnumerationCompleted;

如果我已列入白名单的蓝牙设备已打开,则设备观察程序会找到该设备。但如果我关闭设备,我永远不会收到“已移除”事件。

如果设备关闭并且我等待接收“枚举完成”事件,然后打开设备,我永远不会收到“添加”事件。

我尝试了 Microsoft 提供的示例(“DeviceEnumerationAndPairing”),但该示例的作用相同。

如果我保持程序运行并打开蓝牙设置,如下所示:

然后它按预期工作,我在关闭和关闭设备时收到“更新”和“删除”事件。

我是否需要激活某种扫描例程才能检测可用的蓝牙设备,如果需要,我该怎么做?

【问题讨论】:

    标签: c# bluetooth uwp


    【解决方案1】:

    应用必须订阅所有添加、删除和更新的事件,以便在有设备添加、删除或更新时收到通知。如果应用只处理添加的事件,则在初始设备枚举完成后将设备添加到系统时,它不会收到更新。

    更多信息见DeviceInformation.CreateWatcher的备注。

    根据文档,我们应该可以添加DeviceWatcher的添加、删除和更新事件。当我关闭设备时,将触发 remove 事件。

    请注意,当设备配对后,如果您关闭它,Removed 事件将不会被触发。也不会在蓝牙设置中删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 2021-12-26
      • 2012-04-22
      • 2021-10-03
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多