summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Sliwowski <psliwowski@google.com>2013-11-12 10:27:21 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-12 10:27:21 -0800
commite4f70b16887780dc9f81a099067988374eac2f12 (patch)
treee5137d93263ce535efdf31157a55e6a60eb74212
parent3f1eee38bd604731ab1f1bdb915caf106db6fe17 (diff)
parentfc1015da4e38b37faaa99e69bc5fdd5364a045d2 (diff)
downloadplatform_packages_apps_DeskClock-idea133-weekly-release.tar.gz
platform_packages_apps_DeskClock-idea133-weekly-release.tar.bz2
platform_packages_apps_DeskClock-idea133-weekly-release.zip
am fc1015da: am 00c596f2: Add buffer check to fix TIME_SET marking an alarm missed.idea133-weekly-releaseidea133
* commit 'fc1015da4e38b37faaa99e69bc5fdd5364a045d2': Add buffer check to fix TIME_SET marking an alarm missed.
-rw-r--r--src/com/android/deskclock/alarms/AlarmStateManager.java15
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