예제 #1
0
        // 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;
            }
        }
예제 #2
0
        // 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;
            }
        }