From 170b39b30ef6340a99fde0e1e6a46cf935e4cde6 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Tue, 29 Sep 2015 14:07:33 -0700 Subject: Fixed that emergency alert reminder does not trigger every 2 minutes. The alert was not triggered because the device was in deep sleep. The OS shifts the alarms in order to minimize wakeups and battery use. Since this is emergency scenario, we use AlarmManager.setExact to trigger the alarm in every 2 or 15 minutes precisely. bug: 24391040 Change-Id: I7a3812b48543a6e4dfc0efe4791d21da9feab771 (cherry picked from commit 2c71594ba2d74e37a2e80948c3bb36150ff9ad6d) --- src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java index b2cdef7d..6bb981cf 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java @@ -139,7 +139,9 @@ public class CellBroadcastAlertReminder extends Service { // remind user after 2 minutes or 15 minutes long triggerTime = SystemClock.elapsedRealtime() + (interval * 60000); - alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, sPlayReminderIntent); + // We use setExact instead of set because this is for emergency reminder. + alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, + triggerTime, sPlayReminderIntent); return true; } -- cgit v1.2.3