diff options
| author | Annie Chin <afchin@google.com> | 2015-04-23 17:04:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-23 17:04:12 +0000 |
| commit | ea6b5f127abdea10a3528fc80fa9c82bbe221ca1 (patch) | |
| tree | 210ae32e32434d68db19089fdbef9fdaf3234156 | |
| parent | 79d8607b20ac4fc15ca97c8552177ba03e9a706b (diff) | |
| parent | 1ca117f15d3a1054fd690c09704afe424cb0f3c2 (diff) | |
| download | platform_packages_apps_DeskClock-master-soong.tar.gz platform_packages_apps_DeskClock-master-soong.tar.bz2 platform_packages_apps_DeskClock-master-soong.zip | |
Merge "Correctly reschedule alarms on system time change."android-m-preview-2android-m-preview-1android-m-previewmaster-soong
| -rw-r--r-- | src/com/android/deskclock/alarms/AlarmStateManager.java | 3 | ||||
| -rw-r--r-- | src/com/android/deskclock/provider/Alarm.java | 26 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java index 7b21ce4fb..c2762052e 100644 --- a/src/com/android/deskclock/alarms/AlarmStateManager.java +++ b/src/com/android/deskclock/alarms/AlarmStateManager.java @@ -631,6 +631,9 @@ public final class AlarmStateManager extends BroadcastReceiver { // TODO: Refactor this code to not use the overloaded registerInstance method. 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())); + AlarmInstance.updateInstance(contentResolver, instance); AlarmStateManager.registerInstance(context, instance, false); } AlarmStateManager.updateNextAlarm(context); diff --git a/src/com/android/deskclock/provider/Alarm.java b/src/com/android/deskclock/provider/Alarm.java index 277eb77cb..5494cb87c 100644 --- a/src/com/android/deskclock/provider/Alarm.java +++ b/src/com/android/deskclock/provider/Alarm.java @@ -298,17 +298,26 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns { } public AlarmInstance createInstanceAfter(Calendar time) { + Calendar nextInstanceTime = getNextAlarmTime(time); + AlarmInstance result = new AlarmInstance(nextInstanceTime, id); + result.mVibrate = vibrate; + result.mLabel = label; + result.mRingtone = alert; + return result; + } + + public Calendar getNextAlarmTime(Calendar currentTime) { Calendar nextInstanceTime = Calendar.getInstance(); - nextInstanceTime.set(Calendar.YEAR, time.get(Calendar.YEAR)); - nextInstanceTime.set(Calendar.MONTH, time.get(Calendar.MONTH)); - nextInstanceTime.set(Calendar.DAY_OF_MONTH, time.get(Calendar.DAY_OF_MONTH)); + nextInstanceTime.set(Calendar.YEAR, currentTime.get(Calendar.YEAR)); + nextInstanceTime.set(Calendar.MONTH, currentTime.get(Calendar.MONTH)); + nextInstanceTime.set(Calendar.DAY_OF_MONTH, currentTime.get(Calendar.DAY_OF_MONTH)); nextInstanceTime.set(Calendar.HOUR_OF_DAY, hour); nextInstanceTime.set(Calendar.MINUTE, minutes); nextInstanceTime.set(Calendar.SECOND, 0); nextInstanceTime.set(Calendar.MILLISECOND, 0); - // If we are still behind the passed in time, then add a day - if (nextInstanceTime.getTimeInMillis() <= time.getTimeInMillis()) { + // If we are still behind the passed in currentTime, then add a day + if (nextInstanceTime.getTimeInMillis() <= currentTime.getTimeInMillis()) { nextInstanceTime.add(Calendar.DAY_OF_YEAR, 1); } @@ -317,12 +326,7 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns { if (addDays > 0) { nextInstanceTime.add(Calendar.DAY_OF_WEEK, addDays); } - - AlarmInstance result = new AlarmInstance(nextInstanceTime, id); - result.mVibrate = vibrate; - result.mLabel = label; - result.mRingtone = alert; - return result; + return nextInstanceTime; } @Override |
