DeviceConnectionChangeTrigger-值不在预期范围内

本文关键字:范围内 DeviceConnectionChangeTrigger- | 更新日期: 2023-09-27 18:27:37

我正在为桌面和移动设备开发一个UWP应用程序。我想使用DeviceConnectionChangeTrigger来识别我的BT设备何时在范围内,但当我尝试使用它时,我无法注册后台任务,因为它在执行BackgroundTaskBuilder的"register"方法时一直返回System.ArgumentException"值不在预期范围内。"。

代码很简单

    var current = BackgroundExecutionManager.GetAccessStatus();
    if (current == BackgroundAccessStatus.Unspecified || current == BackgroundAccessStatus.Denied)
    {
      var result = await BackgroundExecutionManager.RequestAccessAsync();
      if (result == BackgroundAccessStatus.Denied || result == BackgroundAccessStatus.Unspecified)
        throw new Exception("You cannot register Access");
    }
    //I tested it with BT and BTLE device but no luck
    //var devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector());
    var devices = await DeviceInformation.FindAllAsync(BluetoothDevice.GetDeviceSelector());
    var device = devices.FirstOrDefault();
    if (device == null) throw new Exception("Device not found");
    var trigger = await DeviceConnectionChangeTrigger.FromIdAsync(device.Id);
    //trigger.MaintainConnection = true;
    var builder = new BackgroundTaskBuilder
    {
      Name = "BluetoothConnectionWatcher",
      TaskEntryPoint = typeof(BluetoothConnectionWatcherTask).FullName
    };
    builder.SetTrigger(trigger);
    //error on next line!
    var r = builder.Register();

我的项目具有蓝牙功能,并且有一个后台任务注册了蓝牙属性标记。

所有蓝牙功能都运行良好,我可以毫无问题地与设备通信。

我尝试了几个BT和BTLE设备,对于所有这些设备,我似乎都有同样的问题。

我试过Windows 10的桌面版和移动版(都是上一次内部快速构建)。同样的问题。

设备。代码返回的Id类似于我尝试的每个BT设备的"蓝牙#Bluetooth00:1a:7d:da:71:0a-fc:58:fa:4c:17:0a"(当然,第二次MAC地址更改基于设备…)

有什么建议吗?提前感谢

DeviceConnectionChangeTrigger-值不在预期范围内

据我所知,对于BLE,你应该使用为其设计的触发器。因此,如果你想了解特性变化,那么你应该使用GattCharacteristicNotificationTrigger,使用它的示例可以在我的博客中找到。

然后,如果它只是BLE设备可用性,并且您可以通过扫描记录数据检测您的设备,那么请使用BluetoothLEAdvertisementWatcherTrigger。我的朋友朱哈娜在他的博客中有这样的例子。