0

Я разрабатываю приложение UWP для настольных компьютеров и мобильных устройств. Я хотел бы использовать DeviceConnectionChangeTrigger для определения того, когда мое устройство BT находится в зоне действия, но когда я пытаюсь его использовать, я не могу зарегистрировать фоновую задачу, потому что она сохраняет return System.ArgumentException «Значение не входит в ожидаемый диапазон». при выполнении «Register» метода BackgroundTaskBuilder.DeviceConnectionChangeTrigger - Значение не входит в ожидаемый диапазон

код очень прост

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(); 

Мой проект имеет возможности Bluetooth и один фоновую задачу зарегистрированных Bluetooth собственности помеченных.

Все функции Bluetooth работают хорошо, и я могу общаться с устройствами без проблем.

Я попробовал несколько устройств BT и BTLE, и для всех из них, похоже, у меня такая же проблема.

Я пробовал настольную и мобильную версию Windows 10 (как последняя быстрая сборка инсайдеров). Та же проблема.

Устройство, возвращаемое кодом, похоже на «Bluetooth # Bluetooth00: 1a: 7d: da: 71: 0a-fc: 58: fa: 4c: 17: 0a» для каждого устройства BT, которое я пытался (конечно 2-е изменение MAC-адреса на основе устройства ...)

Любые советы? Заранее спасибо

ответ

0

Насколько я знаю, с BLE вы должны использовать созданные для этого триггеры. Таким образом, если это изменение характеристик, о котором вы хотели бы узнать, тогда вы должны использовать GattCharacteristicNotificationTrigger, а пример по его использованию можно найти по адресу my blog.

Тогда, если это просто доступность устройства BLE, и вы можете обнаружить свои данные с помощью данных scanrecord, тогда вместо этого используйте BluetoothLEAdvertisementWatcherTrigger. Мой друг Juhana имеет пример для этого в his blog.

+0

Спасибо за ссылки! Я смотрю на них прямо сейчас ... Я дам вам знать – user2277672

+0

2-я ссылка не woks, есть ли у вас альтернатива? – user2277672

+0

Он оказался недоступным в этот момент времени, отлично работал, когда я добавил ссылку, предполагая, что она снова будет в сети. –

 Смежные вопросы

  • Нет связанных вопросов^_^