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