diff options
author | Mao Jinlong <c_jmao@codeaurora.org> | 2017-05-24 16:14:23 +0800 |
---|---|---|
committer | Rashed Abdel-Tawab <rashed@linux.com> | 2017-12-05 16:59:03 -0800 |
commit | 88131faec60f08328a33131e6a8e1a63ba4d2eef (patch) | |
tree | bf075faed75aa99fc8763e092ffdb350c2844ecc | |
parent | 7f5c202f55eb5ab756192257d1d2c4e6ec8c3d40 (diff) | |
download | android_packages_apps_DeskClock-88131faec60f08328a33131e6a8e1a63ba4d2eef.tar.gz android_packages_apps_DeskClock-88131faec60f08328a33131e6a8e1a63ba4d2eef.tar.bz2 android_packages_apps_DeskClock-88131faec60f08328a33131e6a8e1a63ba4d2eef.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. */ |