// React to a change in configuration parameters: // Save new values to local settings // Set link-loss alert level on the device if appropriate // Register or unregister background task if necessary private async void SaveSettings() { // Save this device's settings into nonvolatile storage localSettings.Values[addressString] = string.Join(",", alertOnPhone, alertOnDevice, alertLevel); // If the device is connected and wants to hear about the alert level on link loss, tell it if (alertOnDevice && device.ConnectionStatus == BluetoothConnectionStatus.Connected) { await SetAlertLevelCharacteristic(); } // If we need a background task and one isn't already registered, create one if (TaskRegistration == null && (alertOnPhone || alertOnDevice)) { DeviceConnectionChangeTrigger trigger = await DeviceConnectionChangeTrigger.FromIdAsync(device.DeviceId); trigger.MaintainConnection = true; BackgroundTaskBuilder builder = new BackgroundTaskBuilder(); builder.Name = TaskName; builder.TaskEntryPoint = "KeepTheKeysBackground.KeyFobTask"; builder.SetTrigger(trigger); TaskRegistration = builder.Register(); } // If we don't need a background task but have one, unregister it if (TaskRegistration != null && !alertOnPhone && !alertOnDevice) { TaskRegistration.Unregister(false); TaskRegistration = null; } }