Exemplo n.º 1
0
 public override void OnReceive(Context context, Intent intent)
 {
     //Log.Info($"MyBootReceiver.OnReceive ({intent.Action})", "Info");
     //Toast.MakeText(context, "BootCompleted broadcast message is received", ToastLength.Long).Show();
     if (intent.Action.Equals(Intent.ActionBootCompleted) ||
         intent.Action.Equals(Intent.ActionLockedBootCompleted))
     {
         //Log.Info($"MyBootReceiver.OnReceive ({intent.Action}) Accepted", "Info");
         if (Globals.Database.CheckSetting(UserSettings.AutoBackupPhotos, "1") &&
             !string.IsNullOrEmpty(Globals.Database.LoadSetting(UserSettings.PhotoBackupPrefix)) &&
             int.TryParse(Globals.Database.LoadSetting(UserSettings.PhotoBackupInterval), out var workInterval))
         {
             var workConstraints = new Constraints.Builder()
                                   .SetRequiredNetworkType(NetworkType.NotRequired).SetRequiresBatteryNotLow(true)
                                   .SetRequiresCharging(false).Build();
             var workRequest = new PeriodicWorkRequest.Builder(typeof(PhotosBackupWorker), TimeSpan.FromHours(workInterval))
                               .SetConstraints(workConstraints).Build();
             WorkManager.GetInstance(context).Enqueue(workRequest);
             Globals.Database.SaveSetting(AndroidUserSettings.BackupScheduleId, workRequest.Id.ToString());
             //Log.Info($"MyBootReceiver.OnReceive Create BackupScheduleId={workRequest.Id}", "Info");
         }
         else
         {
             //Log.Info($"MyBootReceiver: Autobackup={Globals.Database.CheckSetting(UserSettings.AutoBackupPhotos, "1")}", "Info");
             //Log.Info($"MyBootReceiver: PhotoBackupPrefix={Globals.Database.LoadSetting(UserSettings.PhotoBackupPrefix)}", "Info");
             //Log.Info($"MyBootReceiver: PhotoBackupInterval={Globals.Database.LoadSetting(UserSettings.PhotoBackupInterval)}", "Info");
         }
     }
 }
Exemplo n.º 2
0
        public static void ScheduleBackgroundFetch()
        {
            //The interval has to be minimum 15 minutes.
            //Note that execution may be delayed because WorkManager is subject to OS battery optimizations,
            //such as doze mode.
            PeriodicWorkRequest.Builder periodicWorkRequestBuilder = new PeriodicWorkRequest.Builder(
                typeof(BackgroundFetchWorker),
                Conf.BACKGROUND_FETCH_REPEAT_INTERVAL_ANDROID);

            periodicWorkRequestBuilder
            //Start time is when the first time will be
            .SetPeriodStartTime(TimeSpan.FromSeconds(1))
            //If Result.InvokeRetry() is called it will linearly double the amount of time specified below before it tries again.
            .SetBackoffCriteria(BackoffPolicy.Linear, TimeSpan.FromSeconds(10))
            .SetConstraints(new Constraints.Builder()
                            //Only run if connected to the internet
                            .SetRequiredNetworkType(NetworkType.Connected)
                            .Build());

            PeriodicWorkRequest periodicWorkRequest = periodicWorkRequestBuilder.Build();

            WorkManager workManager = WorkManager.GetInstance(Platform.AppContext);

            workManager.EnqueueUniquePeriodicWork("exposurenotification",
                                                  ExistingPeriodicWorkPolicy.Keep,
                                                  periodicWorkRequest);
        }
Exemplo n.º 3
0
        private static PeriodicWorkRequest CreatePeriodicWorkRequest()
        {
            var workRequestBuilder = new PeriodicWorkRequest.Builder(
                typeof(BackgroundFetchWorker),
                bgRepeatInterval);

            bgRequestBuilder.Invoke(workRequestBuilder);
            return(workRequestBuilder.Build());
        }
Exemplo n.º 4
0
 static void requestBuilder(PeriodicWorkRequest.Builder b) =>
 b.SetConstraints(new Constraints.Builder()
                  .SetRequiresBatteryNotLow(true)
                  .SetRequiredNetworkType(NetworkType.Connected)
                  .Build())
 .SetBackoffCriteria(
     BackoffPolicy.Linear,
     WORKER_BACKOFF_DELAY_HOURS,
     TimeUnit.Hours
     );
Exemplo n.º 5
0
        private PeriodicWorkRequest CreatePeriodicWorkRequest()
        {
            var workRequestBuilder = new PeriodicWorkRequest.Builder(
                typeof(DataMaintainanceBackgroundWorker),
                INTERVAL_IN_HOURS, TimeUnit.Hours
                )
                                     .SetConstraints(new Constraints.Builder()
                                                     .SetRequiresBatteryNotLow(true)
                                                     .Build())
                                     .SetBackoffCriteria(BackoffPolicy.Linear, BACKOFF_DELAY_IN_MINUTES, TimeUnit.Minutes);

            return(workRequestBuilder.Build());
        }
        private static PeriodicWorkRequest CreatePeriodicWorkRequest()
        {
            var workRequestBuilder = new PeriodicWorkRequest.Builder(
                typeof(BackgroundWorker),
                INTERVAL_IN_MINUTES, TimeUnit.Minutes)
                                     .SetConstraints(new Constraints.Builder()
                                                     .SetRequiresBatteryNotLow(true)
                                                     .SetRequiredNetworkType(NetworkType.Connected)
                                                     .Build())
                                     .SetBackoffCriteria(BackoffPolicy.Linear, BACKOFF_DELAY_IN_MINUTES, TimeUnit.Minutes);

            return(workRequestBuilder.Build());
        }
Exemplo n.º 7
0
        private void ToggleAutoBackup(object sender, Android.Widget.CompoundButton.CheckedChangeEventArgs e)
        {
            if (e.IsChecked)
            {
                if (string.IsNullOrEmpty(Globals.Database.LoadSetting(UserSettings.PhotoBackupPrefix)))
                {
                    AutoBackupCell.switch_button.Checked = false;
                    Activity.ShowAlert(GetString(Resource.String.cannot_set_up_backup), GetString(Resource.String.cannot_set_up_backup_location));
                    return;
                }

                if (!int.TryParse(Globals.Database.LoadSetting(UserSettings.PhotoBackupInterval), out var workInterval))
                {
                    AutoBackupCell.switch_button.Checked = false;
                    Activity.ShowAlert(GetString(Resource.String.cannot_set_up_backup), GetString(Resource.String.cannot_set_up_backup_interval));
                    return;
                }

                new AlertDialog.Builder(Context)
                .SetTitle(GetString(Resource.String.enable_autostart))
                .SetMessage(GetString(Resource.String.enable_autostart_desc))
                .SetNegativeButton("Deny", (s, e) => {
                    AutoBackupCell.switch_button.Checked = false;
                })
                .SetPositiveButton("ALLOW", (s, e) => {
                    var autoStartAvailable = AutoStartPermissionHelper.Instance.IsAutoStartPermissionAvailable(Context);
                    var success            = AutoStartPermissionHelper.Instance.GetAutoStartPermission(Context);

                    var workConstraints = new Constraints.Builder()
                                          .SetRequiredNetworkType(NetworkType.NotRequired).SetRequiresBatteryNotLow(true)
                                          .SetRequiresCharging(false).Build();
                    var workRequest = new PeriodicWorkRequest.Builder(typeof(PhotosBackupWorker), TimeSpan.FromHours(workInterval))
                                      .SetConstraints(workConstraints).Build();
                    WorkManager.GetInstance(Context).Enqueue(workRequest);
                    Globals.Database.SaveSetting(UserSettings.AutoBackupPhotos, "1");
                    Globals.Database.SaveSetting(AndroidUserSettings.BackupScheduleId, workRequest.Id.ToString());
                })
                .Create()
                .Show();
            }
            else
            {
                Globals.Database.SaveSetting(UserSettings.AutoBackupPhotos, "0");
                var workRequest = Globals.Database.LoadSetting(AndroidUserSettings.BackupScheduleId);
                if (!string.IsNullOrEmpty(workRequest))
                {
                    WorkManager.GetInstance(Context).CancelWorkById(Java.Util.UUID.FromString(workRequest));
                }
            }
        }
Exemplo n.º 8
0
        // Works fine
        private void WorkTest5()
        {
            this.num = 5;
            var workManager = WorkManager.GetInstance(Xamarin.Essentials.Platform.AppContext);

            var workRequestBuilder = new PeriodicWorkRequest.Builder(typeof(SampleWorker), INTERVAL, TimeUnit.Minutes);

            var workRequest = workRequestBuilder.Build();

            workManager.EnqueueUniquePeriodicWork(
                "exposurenotificaiton",
                ExistingPeriodicWorkPolicy.Replace,
                workRequest);
        }
Exemplo n.º 9
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            workerManager = WorkManager.GetInstance(Application.Context);
            workerManager.CancelAllWork();
            workerManager.PruneWork();
            SetContentView(Resource.Layout.activity_main);

            progressBar = FindViewById <ProgressBar>(Resource.Id.progressBar1);
            textView    = FindViewById <TextView>(Resource.Id.textView1);
            Button createWork = FindViewById <Button>(Resource.Id.button1);

            createWork.Click += (sender, e) =>
            {
                textView.Text = string.Empty;
                var oneTimeWorkRequest = new OneTimeWorkRequest.Builder(typeof(MyWorker))
                                         .AddTag("MyWorker")
                                         .SetInitialDelay(TimeSpan.FromSeconds(10))
                                         .Build();

                workerManager.BeginUniqueWork("MyWorker", ExistingWorkPolicy.Replace, oneTimeWorkRequest).Enqueue();
            };

            Button createListenableWork = FindViewById <Button>(Resource.Id.button2);

            createListenableWork.Click += (sender, e) =>
            {
                textView.Text = string.Empty;
                var periodicWorkRequest =
                    new PeriodicWorkRequest.Builder(typeof(MyListenableWorker), TimeSpan.FromMinutes(10))
                    .SetBackoffCriteria(BackoffPolicy.Linear, TimeSpan.FromSeconds(10))
                    .AddTag("MyListenableWorker")
                    .Build();

                workerManager.Enqueue(periodicWorkRequest);
                workerManager.GetWorkInfosByTagLiveData("MyListenableWorker").Observe(this, this);
            };

            Button cancelListenableWork = FindViewById <Button>(Resource.Id.button3);

            cancelListenableWork.Click += (sender, e) =>
            {
                workerManager.CancelAllWorkByTag("MyListenableWorker");
            };
        }
Exemplo n.º 10
0
        static Task PlatformScheduleFetch()
        {
            var workManager = WorkManager.GetInstance(Essentials.Platform.AppContext);

            var workRequestBuilder = new PeriodicWorkRequest.Builder(
                typeof(BackgroundFetchWorker),
                bgRepeatInterval);

            bgRequestBuilder.Invoke(workRequestBuilder);

            var workRequest = workRequestBuilder.Build();

            workManager.EnqueueUniquePeriodicWork("exposurenotification",
                                                  ExistingPeriodicWorkPolicy.Replace,
                                                  workRequest);

            return(Task.CompletedTask);
        }
Exemplo n.º 11
0
        public override void OnDismiss(IDialogInterface dialog)
        {
            base.OnDismiss(dialog);

            _preferences.AutoBackupEnabled = _backupEnabledSwitch.Checked;
            _preferences.AutoRestoreEnabled = _restoreEnabledSwitch.Checked;
            
            var shouldBeEnabled = _backupEnabledSwitch.Checked || _restoreEnabledSwitch.Checked;
            var workManager = WorkManager.GetInstance(Context);

            if(shouldBeEnabled)
            {
                var workRequest = new PeriodicWorkRequest.Builder(typeof(AutoBackupWorker), 15, TimeUnit.Minutes).Build();
                workManager.EnqueueUniquePeriodicWork(AutoBackupWorker.Name, ExistingPeriodicWorkPolicy.Keep, workRequest);
            }
            else
                workManager.CancelUniqueWork(AutoBackupWorker.Name);
        }
Exemplo n.º 12
0
        // Doesn't work
        private void WorkTest1()
        {
            this.num = 1;
            var workManager = WorkManager.GetInstance(Xamarin.Essentials.Platform.AppContext);

            var workRequestBuilder = new PeriodicWorkRequest.Builder(typeof(SampleWorker), TimeSpan.FromMinutes(INTERVAL))
                                     .SetConstraints(new Constraints.Builder()
                                                     .SetRequiresBatteryNotLow(true)
                                                     .SetRequiresDeviceIdle(true)
                                                     //.SetRequiredNetworkType(NetworkType.Connected)
                                                     .Build());

            var workRequest = workRequestBuilder.Build();

            workManager.EnqueueUniquePeriodicWork(
                "exposurenotificaiton",
                ExistingPeriodicWorkPolicy.Replace,
                workRequest);
        }
Exemplo n.º 13
0
        protected override void RegisterNative(JobInfo jobInfo)
        {
            this.CancelNative(jobInfo);

            //WorkManager.Initialize(this.context.AppContext, new Configuration())
            var constraints = new Constraints.Builder()
                              .SetRequiresBatteryNotLow(jobInfo.BatteryNotLow)
                              .SetRequiresCharging(jobInfo.DeviceCharging)
                              .SetRequiredNetworkType(ToNative(jobInfo.RequiredInternetAccess))
                              .Build();

            var data = new Data.Builder();

            data.PutString(ShinyJobWorker.ShinyJobIdentifier, jobInfo.Identifier);

            if (jobInfo.Repeat)
            {
                var request = new PeriodicWorkRequest.Builder(typeof(ShinyJobWorker), TimeSpan.FromMinutes(15))
                              .SetConstraints(constraints)
                              .SetInputData(data.Build())
                              .Build();

                this.Instance.EnqueueUniquePeriodicWork(
                    jobInfo.Identifier,
                    ExistingPeriodicWorkPolicy.Replace,
                    request
                    );
            }
            else
            {
                var worker = new OneTimeWorkRequest.Builder(typeof(ShinyJobWorker))
                             .SetInputData(data.Build())
                             .SetConstraints(constraints)
                             .Build();

                this.Instance.EnqueueUniqueWork(
                    jobInfo.Identifier,
                    ExistingWorkPolicy.Append,
                    worker
                    );
            }
        }
Exemplo n.º 14
0
        public static void EnableAniListNotificationJob(Context context)
        {
            var workReq = new PeriodicWorkRequest.Builder(typeof(AniListNotificationJobWorker), TimeSpan.FromMinutes(30)).AddTag(AniListNotificationJobWorker.Tag).Build();

            WorkManager.GetInstance(context).EnqueueUniquePeriodicWork(AniListNotificationJobWorker.Tag, ExistingPeriodicWorkPolicy.Keep, workReq);
        }
Exemplo n.º 15
0
 static void requestBuilder(PeriodicWorkRequest.Builder b) =>
 b.SetConstraints(new Constraints.Builder()
                  .SetRequiresBatteryNotLow(true)
                  .SetRequiredNetworkType(NetworkType.Connected)
                  .Build());