diff options
author | Sean Stout <sstout@google.com> | 2016-08-24 16:22:04 -0700 |
---|---|---|
committer | Sean Stout <sstout@google.com> | 2016-08-25 10:42:04 -0700 |
commit | b94e7136d603060b752bf91e8164da99fc9399de (patch) | |
tree | 2f9382eff8786417593f61bd1bc92e26ebd73667 /src | |
parent | afbf723776de5d5524db1f4f8d1277ecaf4c2d5c (diff) |
Missed timer notifications on Pre-N now say expiration time.
Bug: 29409562
Instead of updating notifications for missed timers every minute on
Pre N devices, now the missed notification is only posted once with
the time the timer was meant to expire.
Change-Id: I2e38f292c2af4c239012e9a4ef924946ffde9f58
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/deskclock/AlarmUtils.java | 6 | ||||
-rw-r--r-- | src/com/android/deskclock/data/TimerNotificationBuilderPreN.java | 48 |
2 files changed, 10 insertions, 44 deletions
diff --git a/src/com/android/deskclock/AlarmUtils.java b/src/com/android/deskclock/AlarmUtils.java index 5f91a0066..408292530 100644 --- a/src/com/android/deskclock/AlarmUtils.java +++ b/src/com/android/deskclock/AlarmUtils.java @@ -42,6 +42,12 @@ public class AlarmUtils { return (String) DateFormat.format(pattern, time); } + public static String getFormattedTime(Context context, long timeInMillis) { + final Calendar c = Calendar.getInstance(); + c.setTimeInMillis(timeInMillis); + return getFormattedTime(context, c); + } + public static String getAlarmText(Context context, AlarmInstance instance, boolean includeLabel) { String alarmTimeStr = getFormattedTime(context, instance.getAlarmTime()); diff --git a/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java b/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java index 98ac82a91..02946fb3d 100644 --- a/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java +++ b/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java @@ -29,6 +29,7 @@ import android.support.v4.app.NotificationCompat; import android.support.v4.content.ContextCompat; import android.text.TextUtils; +import com.android.deskclock.AlarmUtils; import com.android.deskclock.HandleDeskClockApiCalls; import com.android.deskclock.R; import com.android.deskclock.Utils; @@ -243,7 +244,7 @@ class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder { public Notification buildMissed(Context context, NotificationModel nm, List<Timer> missedTimers) { final Timer timer = missedTimers.get(0); - final long remainingTime = timer.getRemainingTime(); + final long expirationTime = timer.getWallClockExpirationTime(); // Generate a title, and some actions based on timer states. final String contentTitle; @@ -254,7 +255,7 @@ class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder { if (missedTimers.size() == 1) { // Single timer is missed. - contentText = formatElapsedTimeMissedBy(context, remainingTime); + contentText = AlarmUtils.getFormattedTime(context, expirationTime); if (TextUtils.isEmpty(timer.getLabel())) { contentTitle = context.getString(R.string.missed_timer_notification_label); } else { @@ -269,7 +270,7 @@ class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder { .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId()); } else { // Multiple missed timers. - contentText = formatElapsedTimeMissedBy(context, remainingTime); + contentText = AlarmUtils.getFormattedTime(context, expirationTime); contentTitle = context.getString(R.string.timer_multi_missed, missedTimers.size()); firstActionIconId = R.drawable.ic_reset_24dp; @@ -305,18 +306,6 @@ class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder { final String action1Title = context.getString(firstActionTitleId); builder.addAction(firstActionIconId, action1Title, action1); - final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - final Intent updateNotification = - TimerService.createUpdateMissedNotificationIntent(context); - // Schedule a callback to update the time-sensitive information of the missed timer. - final PendingIntent pi = - PendingIntent.getService(context, REQUEST_CODE_MISSING, updateNotification, - PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT); - - final long nextMinuteChange = remainingTime % MINUTE_IN_MILLIS; - final long triggerTime = SystemClock.elapsedRealtime() + nextMinuteChange; - TimerModel.schedulePendingIntent(am, triggerTime, pi); - return builder.build(); } @@ -353,33 +342,4 @@ class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder { } return String.format(context.getString(formatStringId), hourSeq, minSeq, verb); } - - /** - * Format "7 hours 52 minutes ago" - */ - @VisibleForTesting - static String formatElapsedTimeMissedBy(Context context, long missedByTime) { - final int hours = (int) -missedByTime / (int) HOUR_IN_MILLIS; - final int minutes = (int) -missedByTime / ((int) MINUTE_IN_MILLIS) % 60; - - String minSeq = Utils.getNumberFormattedQuantityString(context, R.plurals.minutes, minutes); - String hourSeq = Utils.getNumberFormattedQuantityString(context, R.plurals.hours, hours); - - final boolean showHours = hours > 0; - final boolean showMinutes = minutes > 0; - - int formatStringId; - if (showHours) { - if (showMinutes) { - formatStringId = R.string.timer_notifications_missed_hours_minutes; - } else { - formatStringId = R.string.timer_notifications_missed_hours; - } - } else if (showMinutes) { - formatStringId = R.string.timer_notifications_missed_minutes; - } else { - formatStringId = R.string.timer_notifications_missed_less_min; - } - return String.format(context.getString(formatStringId), hourSeq, minSeq); - } }
\ No newline at end of file |