From 162e27cd0b7a5230404cb89cd9533abc800eec87 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 10 Oct 2012 17:01:18 -0700 Subject: [PATCH] First pass at rescheduling cal alarms every 12 hours --- astrid/AndroidManifest.xml | 31 +++++++++++------ .../astrid/gcal/CalendarAlarmScheduler.java | 9 ++++- .../astrid/gcal/CalendarStartupReceiver.java | 33 +++++++++++++++++++ .../astrid/service/StartupService.java | 6 ++-- 4 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index f440b65c2..a32d58212 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -227,8 +227,6 @@ - - @@ -293,14 +291,6 @@ - - - - - - @@ -512,6 +502,27 @@ + + + + + + + + + + + + + + + + + + + ? AND " + Calendars.EVENTS_DTSTART_COL + " < ?", @@ -50,7 +51,6 @@ public class CalendarAlarmScheduler { PendingIntent pendingIntent = PendingIntent.getBroadcast(context, CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER, eventAlarm, 0); - AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); am.cancel(pendingIntent); long alarmTime = start - DateUtilities.ONE_MINUTE * 15; @@ -61,6 +61,13 @@ public class CalendarAlarmScheduler { } } + + // Schedule alarm to recheck and reschedule calendar alarms in 12 hours + Intent rescheduleAlarm = new Intent(CalendarStartupReceiver.BROADCAST_RESCHEDULE_CAL_ALARMS); + PendingIntent pendingReschedule = PendingIntent.getBroadcast(context, 0, + rescheduleAlarm, 0); + am.cancel(pendingReschedule); + am.set(AlarmManager.RTC, DateUtilities.now() + DateUtilities.ONE_HOUR * 12, pendingReschedule); } finally { events.close(); } diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java new file mode 100644 index 000000000..3cad18fa8 --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java @@ -0,0 +1,33 @@ +package com.todoroo.astrid.gcal; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.timsu.astrid.R; +import com.todoroo.andlib.service.ContextManager; +import com.todoroo.andlib.utility.Preferences; +import com.todoroo.astrid.api.AstridApiConstants; + +public class CalendarStartupReceiver extends BroadcastReceiver { + + public static final String BROADCAST_RESCHEDULE_CAL_ALARMS = AstridApiConstants.PACKAGE + ".SCHEDULE_CAL_REMINDERS"; //$NON-NLS-1$ + + @Override + public void onReceive(Context context, Intent intent) { + ContextManager.setContext(context); + scheduleCalendarAlarms(context); + } + + public static void scheduleCalendarAlarms(final Context context) { + if (!Preferences.getBoolean(R.string.p_calendar_reminders, true)) + return; + new Thread(new Runnable() { + @Override + public void run() { + CalendarAlarmScheduler.scheduleAllCalendarAlarms(context); + } + }).start(); + } + +} diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java index 78e743203..e01ea0f79 100644 --- a/astrid/src/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/com/todoroo/astrid/service/StartupService.java @@ -46,7 +46,7 @@ import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.gcal.CalendarAlarmScheduler; +import com.todoroo.astrid.gcal.CalendarStartupReceiver; import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.sync.GtasksSyncService; import com.todoroo.astrid.opencrx.OpencrxCoreUtils; @@ -120,7 +120,6 @@ public class StartupService { if(hasStartedUp || context == null) return; - // sets up context manager ContextManager.setContext(context); @@ -192,8 +191,6 @@ public class StartupService { AstridPreferences.setCurrentVersionName(versionName); } - CalendarAlarmScheduler.scheduleAllCalendarAlarms(context); - upgradeService.performSecondaryUpgrade(context); final int finalLatestVersion = latestSetVersion; @@ -225,6 +222,7 @@ public class StartupService { // perform initialization ReminderStartupReceiver.startReminderSchedulingService(context); + CalendarStartupReceiver.scheduleCalendarAlarms(context); BackupService.scheduleService(context); actFmSyncService.initialize();