protected Alarm mAlarm;
private int mVolumeBehavior;
- // Receives the ALARM_KILLED action from the AlarmKlaxon.
+ // Receives the ALARM_KILLED action from the AlarmKlaxon,
+ // and also ALARM_SNOOZE_ACTION / ALARM_DISMISS_ACTION from other applications
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- Alarm alarm = intent.getParcelableExtra(Alarms.ALARM_INTENT_EXTRA);
- if (alarm != null && mAlarm.id == alarm.id) {
- dismiss(true);
+ String action = intent.getAction();
+ if (action.equals(Alarms.ALARM_SNOOZE_ACTION)) {
+ snooze();
+ } else if (action.equals(Alarms.ALARM_DISMISS_ACTION)) {
+ dismiss(false);
+ } else {
+ Alarm alarm = intent.getParcelableExtra(Alarms.ALARM_INTENT_EXTRA);
+ if (alarm != null && mAlarm.id == alarm.id) {
+ dismiss(true);
+ }
}
}
};
updateLayout();
- // Register to get the alarm killed intent.
- registerReceiver(mReceiver, new IntentFilter(Alarms.ALARM_KILLED));
+ // Register to get the alarm killed/snooze/dismiss intent.
+ IntentFilter filter = new IntentFilter(Alarms.ALARM_KILLED);
+ filter.addAction(Alarms.ALARM_SNOOZE_ACTION);
+ filter.addAction(Alarms.ALARM_DISMISS_ACTION);
+ registerReceiver(mReceiver, filter);
}
private void setTitle() {
// Dismiss the alarm.
private void dismiss(boolean killed) {
+ Log.i(killed ? "Alarm killed" : "Alarm dismissed by user");
// The service told us that the alarm has been killed, do not modify
// the notification or stop the service.
if (!killed) {
// from the alarm manager.
public static final String ALARM_ALERT_ACTION = "com.android.deskclock.ALARM_ALERT";
+ // A public action sent by AlarmKlaxon when the alarm has stopped sounding
+ // for any reason (e.g. because it has been dismissed from AlarmAlertFullScreen,
+ // or killed due to an incoming phone call, etc).
+ public static final String ALARM_DONE_ACTION = "com.android.deskclock.ALARM_DONE";
+
+ // AlarmAlertFullScreen listens for this broadcast intent, so that other applications
+ // can snooze the alarm (after ALARM_ALERT_ACTION and before ALARM_DONE_ACTION).
+ public static final String ALARM_SNOOZE_ACTION = "com.android.deskclock.ALARM_SNOOZE";
+
+ // AlarmAlertFullScreen listens for this broadcast intent, so that other applications
+ // can dismiss the alarm (after ALARM_ALERT_ACTION and before ALARM_DONE_ACTION).
+ public static final String ALARM_DISMISS_ACTION = "com.android.deskclock.ALARM_DISMISS";
+
// This is a private action used by the AlarmKlaxon to update the UI to
// show the alarm has been killed.
public static final String ALARM_KILLED = "alarm_killed";
android.util.Log.v(LOGTAG, /* SystemClock.uptimeMillis() + " " + */ logMe);
}
+ static void i(String logMe) {
+ android.util.Log.i(LOGTAG, logMe);
+ }
+
static void e(String logMe) {
android.util.Log.e(LOGTAG, logMe);
}