diff options
author | Paul Sliwowski <psliwowski@google.com> | 2013-11-11 17:20:47 -0800 |
---|---|---|
committer | Paul Sliwowski <psliwowski@google.com> | 2013-11-12 01:32:16 +0000 |
commit | 00c596f20b40c6e2c2f12ec5d6ee8d330794cda5 (patch) | |
tree | 670c74236b5862088c2dcbe5ab5afc5f4c0dbfba | |
parent | b04a79caca0bfe2cd56ba541bc043c7b0b60cff8 (diff) | |
download | DeskClock-kitkat-mr1.1-release.tar.gz |
Add buffer check to fix TIME_SET marking an alarm missed.android-sdk-4.4.2_r1.0.1android-sdk-4.4.2_r1android-4.4.2_r2.0.1android-4.4.2_r2android-4.4.2_r1.0.1android-4.4.2_r1android-4.4.1_r1.0.1android-4.4.1_r1kitkat-mr1.1-releasekitkat-mr1-release
BUG: 11630502
Change-Id: I27212246777e0ca5b27688f7f17e883d944fccee
(cherry picked from commit 974ea92ab9d0b4757fb9cdbb34f7c2fe329e1c24)
-rw-r--r-- | src/com/android/deskclock/alarms/AlarmStateManager.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java index 347351b41..105f5631e 100644 --- a/src/com/android/deskclock/alarms/AlarmStateManager.java +++ b/src/com/android/deskclock/alarms/AlarmStateManager.java @@ -111,6 +111,9 @@ public final class AlarmStateManager extends BroadcastReceiver { // Intent category tag used when schedule state change intents in alarm manager. public static final String ALARM_MANAGER_TAG = "ALARM_MANAGER"; + // Buffer time in seconds to fire alarm instead of marking it missed. + public static final int ALARM_FIRE_BUFFER = 15; + public static int getGlobalIntentId(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getInt(ALARM_GLOBAL_ID_EXTRA, -1); @@ -548,7 +551,17 @@ public final class AlarmStateManager extends BroadcastReceiver { // Alarm is so old, just dismiss it setDismissState(context, instance); } else if (currentTime.after(alarmTime)) { - setMissedState(context, instance); + // There is a chance that the TIME_SET occurred right when the alarm should go off, so + // we need to add a check to see if we should fire the alarm instead of marking it + // missed. + Calendar alarmBuffer = Calendar.getInstance(); + alarmBuffer.setTime(alarmTime.getTime()); + alarmBuffer.add(Calendar.SECOND, ALARM_FIRE_BUFFER); + if (currentTime.before(alarmBuffer)) { + setFiredState(context, instance); + } else { + setMissedState(context, instance); + } } else if (instance.mAlarmState == AlarmInstance.SNOOZE_STATE) { // We only want to display snooze notification and not update the time, // so handle showing the notification directly |