diff options
author | Mao Jinlong <c_jmao@codeaurora.org> | 2017-05-24 16:14:23 +0800 |
---|---|---|
committer | Rashed Abdel-Tawab <rashed@linux.com> | 2017-10-28 13:55:56 -0700 |
commit | cf5c48827c631f72a1692a91a66b4704f8dcf4e9 (patch) | |
tree | f45cf8bd7043ef25b64eadce9aa2ab38385f1f10 | |
parent | 1c9ac7b650a6805a1ce70f20de72d9a11bc4afce (diff) | |
download | android_packages_apps_DeskClock-cf5c48827c631f72a1692a91a66b4704f8dcf4e9.tar.gz android_packages_apps_DeskClock-cf5c48827c631f72a1692a91a66b4704f8dcf4e9.tar.bz2 android_packages_apps_DeskClock-cf5c48827c631f72a1692a91a66b4704f8dcf4e9.zip |
DeskClock : Add set and cancel power off alarm actions
Power off alarm feature is based on DeskClock app. Add set and cancel
power off alarm actions for this feature.
CRs-Fixed: 2032439
change-Id: Ic03f87018e163adf6f6e6013963a497d340fbec7
-rw-r--r-- | src/com/android/deskclock/alarms/AlarmStateManager.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java index f0a8db56f..39f6d0c4f 100644 --- a/src/com/android/deskclock/alarms/AlarmStateManager.java +++ b/src/com/android/deskclock/alarms/AlarmStateManager.java @@ -143,6 +143,17 @@ public final class AlarmStateManager extends BroadcastReceiver { private static StateChangeScheduler sStateChangeScheduler = new AlarmManagerStateChangeScheduler(); + private static final String ACTION_SET_POWEROFF_ALARM = + "org.codeaurora.poweroffalarm.action.SET_ALARM"; + + private static final String ACTION_CANCEL_POWEROFF_ALARM = + "org.codeaurora.poweroffalarm.action.CANCEL_ALARM"; + + private static final String POWER_OFF_ALARM_PACKAGE = + "com.qualcomm.qti.poweroffalarm"; + + private static final String TIME = "time"; + private static Calendar getCurrentTime() { return sCurrentTimeFactory == null ? DataModel.getDataModel().getCalendar() @@ -167,6 +178,10 @@ public final class AlarmStateManager extends BroadcastReceiver { private static void updateNextAlarm(Context context) { final AlarmInstance nextAlarm = getNextFiringAlarm(context); + if (nextAlarm != null) { + setPowerOffAlarm(context, nextAlarm); + } + if (Utils.isPreL()) { updateNextAlarmInSystemSettings(context, nextAlarm); } else { @@ -543,6 +558,7 @@ public final class AlarmStateManager extends BroadcastReceiver { scheduleInstanceStateChange(context, instance.getMissedTimeToLive(), instance, AlarmInstance.DISMISSED_STATE); + cancelPowerOffAlarm(context, instance); // Instance is not valid anymore, so find next alarm that will fire and notify system updateNextAlarm(context); } @@ -572,6 +588,7 @@ public final class AlarmStateManager extends BroadcastReceiver { updateParentAlarm(context, instance); } + cancelPowerOffAlarm(context, instance); updateNextAlarm(context); } @@ -583,6 +600,8 @@ public final class AlarmStateManager extends BroadcastReceiver { instance.mAlarmState = AlarmInstance.DISMISSED_STATE; final ContentResolver contentResolver = context.getContentResolver(); AlarmInstance.updateInstance(contentResolver, instance); + + cancelPowerOffAlarm(context, instance); } /** @@ -992,6 +1011,21 @@ public final class AlarmStateManager extends BroadcastReceiver { void cancelScheduledInstanceStateChange(Context context, AlarmInstance instance); } + private static void setPowerOffAlarm(Context context, AlarmInstance instance) { + LogUtils.i("Set next power off alarm : instance id "+ instance.mId); + Intent intent = new Intent(ACTION_SET_POWEROFF_ALARM); + intent.setPackage(POWER_OFF_ALARM_PACKAGE); + intent.putExtra(TIME, instance.getAlarmTime().getTimeInMillis()); + context.sendBroadcast(intent); + } + + private static void cancelPowerOffAlarm(Context context, AlarmInstance instance) { + Intent intent = new Intent(ACTION_CANCEL_POWEROFF_ALARM); + intent.putExtra(TIME, instance.getAlarmTime().getTimeInMillis()); + intent.setPackage(POWER_OFF_ALARM_PACKAGE); + context.sendBroadcast(intent); + } + /** * Schedules state change callbacks within the AlarmManager. */ |