summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authord34d <clark@cyngn.com>2015-07-13 10:32:34 -0700
committerClark Scheff <clark@cyngn.com>2015-07-27 13:29:52 -0700
commit769b85e153e76c030d051e07a7ae3c550fea0f8a (patch)
tree266d119dd29e3f8f91c9a516c2afaf1c9814abaf
parent20dd2b3e74f2fa914e33111c8c90584a67476727 (diff)
downloadandroid_packages_apps_DeskClock-769b85e153e76c030d051e07a7ae3c550fea0f8a.tar.gz
android_packages_apps_DeskClock-769b85e153e76c030d051e07a7ae3c550fea0f8a.tar.bz2
android_packages_apps_DeskClock-769b85e153e76c030d051e07a7ae3c550fea0f8a.zip
Fix rescheduling of alarms that are snoozed
When AlarmInitReceiver recieves android.intent.action.TIME_SET, a call is made to AlarmStateManager.fixAlarmInstances() which will update all alarm instances based on the newly set time. This updates the AlarmInstance based on the Alarm time and not the current time for the given AlarmInstance. This causes snoozed alarms to be scheduled the next time the Alarm is suppose to fire off, if the alarm a repeating alarm. This patch fixes this behavior by passing in a Calendar instance based on the AlarmInstance's time. Steps to repro: 1) Set an alarm for 1 minute from current time 2) Snooze alarm when it goes off 3) Go to Settings -> Date & Time and set the time to 2 minutes ahead 4) The snoozed alarm should be rescheduled to the next day the alarm would fire. Change-Id: Id7e2d5c7b5d2b9d3b92eb51a2e14d70639d56761 (cherry picked from commit d815eef9d102140ff3b0320ea89a4d5cf6e3d9cf) Issue-Id: CYNGNOS-420
-rwxr-xr-xsrc/com/android/deskclock/alarms/AlarmStateManager.java3
-rw-r--r--src/com/android/deskclock/provider/Alarm.java4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java
index 2e5df28f3..128916367 100755
--- a/src/com/android/deskclock/alarms/AlarmStateManager.java
+++ b/src/com/android/deskclock/alarms/AlarmStateManager.java
@@ -682,7 +682,8 @@ public final class AlarmStateManager extends BroadcastReceiver {
ContentResolver contentResolver = context.getContentResolver();
for (AlarmInstance instance : AlarmInstance.getInstances(contentResolver, null)) {
final Alarm alarm = Alarm.getAlarm(contentResolver, instance.mAlarmId);
- instance.setAlarmTime(alarm.getNextAlarmTime(Calendar.getInstance()));
+ instance.setAlarmTime(alarm.getNextAlarmTime(Calendar.getInstance(),
+ instance.mHour, instance.mMinute));
AlarmInstance.updateInstance(contentResolver, instance);
AlarmStateManager.registerInstance(context, instance, false);
}
diff --git a/src/com/android/deskclock/provider/Alarm.java b/src/com/android/deskclock/provider/Alarm.java
index b43271f97..ada636076 100644
--- a/src/com/android/deskclock/provider/Alarm.java
+++ b/src/com/android/deskclock/provider/Alarm.java
@@ -337,6 +337,10 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns {
}
public Calendar getNextAlarmTime(Calendar currentTime) {
+ return getNextAlarmTime(currentTime, hour, minutes);
+ }
+
+ public Calendar getNextAlarmTime(Calendar currentTime, int hour, int minutes) {
Calendar nextInstanceTime = Calendar.getInstance();
nextInstanceTime.set(Calendar.YEAR, currentTime.get(Calendar.YEAR));
nextInstanceTime.set(Calendar.MONTH, currentTime.get(Calendar.MONTH));