设备关闭 BLE 时的 BluetoothLEAdvertisementWatcher - UWP

Posted

技术标签:

【中文标题】设备关闭 BLE 时的 BluetoothLEAdvertisementWatcher - UWP【英文标题】:BluetoothLEAdvertisementWatcher when device turn off BLE - UWP 【发布时间】:2019-12-16 07:54:59 【问题描述】:

我做了什么:

    我有一个可观察的集合Display

    当我收到BluetoothLEAdvertisementWatcher.Received 事件时,我会检查 RSSI。

    如果RSSI > -65DBm,我将设备添加到Display

    (RSSI 变为 -60 > -127 > -57 > -127 > -63 > -127 >......我有点好奇这是否正常)


问题:

当用户关闭设备的BT/BLE时,我可以“捕捉”吗?

这样我就可以Display删除相应的设备

唯一的事件是ReceivedStopped,我认为这不可能像devicewatcher 那样,但仍然......

如果这是不可能的,那也没关系;请评论/回答“这无法完成”,所以我不会白白研究:)

任何帮助表示赞赏!

【问题讨论】:

您是否为设备观察者添加了SignalStrengthFilter 您好,感谢您的评论!我确实添加了过滤器,但是由于我创建的可观察集合没有绑定到观察者(即我需要从列表中手动添加/删除 obj),我觉得它没有意义。有什么方法可以让我了解特定设备是否被认为超出范围? 【参考方案1】:

RSSI 像 -60 > -127 > -57 > -127 > -63 > -127 >......我有点好奇这是否正常

这是正常现象,取决于您的蓝牙设备灵敏度。如果您设置了以下内容,他将过滤掉不匹配的数据。但是对于我的测试,-127 将被观察者捕获。

watcher.SignalStrengthFilter.InRangeThresholdInDBm = -70;
watcher.SignalStrengthFilter.OutOfRangeThresholdInDBm = -75;

如果 RSSI > -65DBm,我将设备添加到 Display

您可以使用eventArgs.RawSignalStrengthInDBmOnAdvertisementReceived 事件处理程序中获取RSSI 值。然后做二次过滤。

Int16 rssi = eventArgs.RawSignalStrengthInDBm;
if (rssi >= -65)

 // add to collection.

有什么方法可以让我知道某个特定设备是否被认为超出了范围?

目前还没有这样的 api 来检测特定设备是否超出范围。

【讨论】:

您好,谢谢您的解释!我应该更清楚地提到上述步骤是我目前正在做的(即已经完成);无论如何,谢谢你的第二部分。 回到故事,所以 RSSI 行为是正常的,目前没有办法检测特定设备是否超出范围。 酷酷!非常感谢你的帮助。希望你有一个美好的一天:)

以上是关于设备关闭 BLE 时的 BluetoothLEAdvertisementWatcher - UWP的主要内容,如果未能解决你的问题,请参考以下文章

强制关闭连接到 Android 应用程序的 BLE 设备会触发状态为 8 的 onConnectionStateChange

用于打开/关闭 LED 的 BLE 设备(服务器)的 GATT 配置文件

iOS 之前绑定的 BLE 设备

从 BLE 设备获取响应

使用 Ionic Native BLE 向 BLE 外围设备发出写入值

Android BLE 扫描屏幕关闭(使用 Galaxy)