예제 #1
0
        private void UpdateScreenData()
        {
            var  now = new Date();
            long monitoringStartTime;

            if ((monitoringStartTime = mPreferences.GetLong(ScreenUtils.MonitoringLastStartTime, -1)) == -1)
            {
                monitoringStartTime = ScreenUtils.GetMonitoringStartTime(now);
                mPreferences.Edit().PutLong(ScreenUtils.MonitoringLastStartTime, monitoringStartTime).Apply();
                using (StreamWriter writer = new StreamWriter(
                           OpenFileOutput(ScreenUnlockReceiver.DebugFile, FileCreationMode.Append)))
                {
                    writer.WriteLine($"----Monitoring m start Time: {now.GetFormattedDateTime()}----");
                }
            }
            else
            {
                var today = mPreferences.GetInt(ScreenUtils.UnlocksToday, -1);
                monitoringStartTime = ScreenUtils.GetMonitoringStartTime(new Date(monitoringStartTime));
                if (TimeUnit.Milliseconds.ToDays(now.Time - monitoringStartTime) >= 1 && today != -1)
                {
                    int u;
                    var lastDayUnlocked = mPreferences.GetInt(ScreenUtils.LastUnlockDay, -1);
                    if ((u = mPreferences.GetInt($"{ScreenUtils.UnlocksDayNumber}{lastDayUnlocked}", -1)) != -1)
                    {
                        today = (int)Math.Ceiling((u + today) / 2d);
                    }
                    if (lastDayUnlocked != -1)
                    {
                        mPreferences.Edit()
                        .PutInt($"{ScreenUtils.UnlocksDayNumber}{lastDayUnlocked}", today)
                        .PutInt(ScreenUtils.LastUnlockDay, lastDayUnlocked)
                        .PutLong(ScreenUtils.MonitoringLastStartTime, monitoringStartTime)
                        .PutInt(ScreenUtils.UnlocksToday, 0)
                        .PutInt(ScreenUtils.UnlocksNewNormalCount, -1)
                        .Apply();
                    }
                    else
                    {
                        mPreferences.Edit()
                        .PutLong(ScreenUtils.MonitoringLastStartTime, monitoringStartTime)
                        .PutInt(ScreenUtils.UnlocksToday, 0)
                        .PutInt(ScreenUtils.UnlocksNewNormalCount, -1)
                        .Apply();
                    }
                    ScreenUnlockReceiver.SetToZero();
                }
            }
            Adapter?.Refresh();
        }
예제 #2
0
            public override void OnCreatePreferences(Bundle savedInstanceState, string rootKey)
            {
                AddPreferencesFromResource(Resource.Xml.settings);
                mPreferences = PreferenceManager.GetDefaultSharedPreferences(Activity);
                SettingsDir  = new File(Activity.DataDir, "shared_prefs");
                var exportPreference = FindPreference("export_settings");

                exportPreference.PreferenceClick += (sender, args) =>
                {
                    var paths = new List <File> {
                        new File(SettingsDir, SettingsFileName)
                    };
                    foreach (var file in Activity.FilesDir.ListFiles())
                    {
                        if (file.IsFile)
                        {
                            paths.Add(file);
                        }
                    }

                    if (paths.Count > 0)
                    {
                        if (OtherUtils.CreateZipArchive(paths, exportFile.AbsolutePath))
                        {
                            Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_successful),
                                           ToastLength.Short).Show();
                        }
                        else
                        {
                            Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_failed),
                                           ToastLength.Short).Show();
                        }
                    }
                    else
                    {
                        Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_no_files),
                                       ToastLength.Short).Show();
                    }
                };

                var importPreference = FindPreference("import_settings");

                importPreference.PreferenceClick += (sender, args) =>
                {
                    if (!exportFile.Exists())
                    {
                        Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_no_file),
                                       ToastLength.Short).Show();
                        return;
                    }

                    if (exportFile.Length() > 1024 * 1024)
                    {
                        Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_big_file),
                                       ToastLength.Short).Show();
                        return;
                    }

                    if (OtherUtils.UnpackZipArchive(exportFile.AbsolutePath, Activity.CacheDir))
                    {
                        Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_successful),
                                       ToastLength.Short).Show();
                    }
                    else
                    {
                        Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_failed),
                                       ToastLength.Short).Show();
                        return;
                    }

                    foreach (var file in Activity.CacheDir.ListFiles())
                    {
                        Stream outputStream;

                        if (file.Name == SettingsFileName)
                        {
                            var path = new File(SettingsDir, SettingsFileName).AbsolutePath;
                            Log.Debug(nameof(OtherUtils.UnpackZipArchive), path);
                            outputStream = new FileStream(path, FileMode.Create);
                        }
                        else
                        {
                            outputStream = Activity.OpenFileOutput(file.Name, FileCreationMode.Private);
                        }

                        string text;
                        if (!file.Exists())
                        {
                            continue;
                        }
                        using (var reader = new StreamReader(new FileStream(file.AbsolutePath, FileMode.Open)))
                        {
                            text = reader.ReadToEnd();
                        }

                        using (var writer = new StreamWriter(outputStream))
                        {
                            writer.Write(text);
                        }

                        file.Delete();
                    }
                };

                var categoriesPreference =
                    (MultiSelectListPreference)FindPreference("selected_categories");

                categoriesPreference.PreferenceChange += (sender, args) =>
                {
                    var set = args.NewValue.JavaCast <HashSet>();
                    SystemModListenerService.SetSystemMonitoringStatus(Activity,
                                                                       set.Contains(DataHolder.SystemCategory));
                    LocationUtils.SetLocationTrackingEnabled(set.Contains(DataHolder.LocationCategory));
                    ScreenUnlockReceiver.SetUnlockReceiverStatus(Activity, set.Contains(DataHolder.ScreenCategory));
                    PhoneCallReceiver.SetCallReceiverStatus(Activity, set.Contains(DataHolder.PhoneCategory));
                    SmsReceiver.SetSmsReceiverStatus(Activity, set.Contains(DataHolder.SmsCategory));

                    var categories = new List <string>();
                    foreach (var val in set.ToArray())
                    {
                        categories.Add(val.ToString());
                    }

                    mPreferences.Edit().PutStringSet(categoriesPreference.Key, categories).Apply();
                };

                var about = FindPreference("app_info");

                about.Summary =
                    Activity.ApplicationContext.PackageManager.GetPackageInfo(Activity.PackageName, 0).VersionName;
                about.PreferenceClick += (sender, args) =>
                {
                    if ((mDevClickedTimes = (mDevClickedTimes + 1) % 7) == 0)
                    {
                        if (Activity is SettingsActivity parent)
                        {
                            parent.LoadScreen(SettingsCategory.Developer);
                        }
                    }
                };

                try
                {
                    var summaryNotifyPreference = FindPreference(MonitoringSummaryType);
                    summaryNotifyPreference.PreferenceChange += (sender, args) =>
                    {
                        AlarmReceiver.RegisterReceiver(Activity, (bool)args.NewValue ? 1 : 0);
                    };
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Log.Error(nameof(MonitoringSummaryType), e.Message);
                }
            }