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地址更改基于设备…)
有什么建议吗?提前感谢
据我所知,对于BLE,你应该使用为其设计的触发器。因此,如果你想了解特性变化,那么你应该使用GattCharacteristicNotificationTrigger,使用它的示例可以在我的博客中找到。
然后,如果它只是BLE设备可用性,并且您可以通过扫描记录数据检测您的设备,那么请使用BluetoothLEAdvertisementWatcherTrigger。我的朋友朱哈娜在他的博客中有这样的例子。