我已经构建了一个Windows 10应用程序,可以监视特定的广告并与之连接。
我使用示例"BluetoothLE" from "Windows-universal-samples"进行了一些编辑。在这个例子中,他们使用" DeviceWatcher"类。
但我现在正试图在特定时间段后添加超时以断开连接。 我发现了这个属性:OutOfRangeTimeout属于BluetoothLEAdvertisementWatcher Class。
现在我很困惑" DeviceWatcher"之间的区别是什么? AND" BluetoothLEAdvertisementWatcher"?
有没有办法添加"超时"使用DeviceWatcher Class?
答案 0 :(得分:4)
“DeviceWatcher”类和“BluetoothLEAdvertisementWatcher”类之间存在很大差异。
deviceWacher处于系统级别;含义您必须先在Windows设置中添加设备才能找到它
这也意味着该设备始终存在于Windows.Devices.Enumeration中,除非您从Windows设置中删除它。
设备观察程序需要很长时间才能完成
另外,要创建一个运行良好的应用程序,您必须实现所有添加,删除和更新的事件
在有设备添加,删除或更新时收到通知
如果应用只处理添加的事件,
如果在初始设备枚举完成后将设备添加到系统,它将不会收到更新。
BluetoothLEAdvertisementWatcher仅侦听发送广告且触手可及的BLe设备。
如果将scanMode设置为活动状态,则观察者会尝试获取设备的所有信息,例如名称,功能,ble-Address,
服务广告有效载荷等。
为scanMode被动设置它,观察者只使用名称和Ble-address监听设备,这更快
扫描时间仅取决于触及范围内的设备数量及其广告时间间隔。
OutOfRangeTimeout指的是BluetoothSignalStrengthFilter,它决定设备是否无法使用。
至于断开的时间:
蓝牙LE设备API无法直接控制与设备的连接 相反,如果没有未完成的引用,Bleutooth-stack将在一秒钟超时后断开设备 因此,您必须使用计时器来设置timeOut并关闭并丢弃设备!