summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMao Jinlong <c_jmao@codeaurora.org>2017-05-24 16:14:23 +0800
committerRashed Abdel-Tawab <rashed@linux.com>2017-12-05 16:59:03 -0800
commit88131faec60f08328a33131e6a8e1a63ba4d2eef (patch)
treebf075faed75aa99fc8763e092ffdb350c2844ecc
parent7f5c202f55eb5ab756192257d1d2c4e6ec8c3d40 (diff)
downloadandroid_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.java34
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.
*/