summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Stout <sstout@google.com>2016-08-24 16:22:04 -0700
committerSean Stout <sstout@google.com>2016-08-25 10:42:04 -0700
commitb94e7136d603060b752bf91e8164da99fc9399de (patch)
tree2f9382eff8786417593f61bd1bc92e26ebd73667 /src
parentafbf723776de5d5524db1f4f8d1277ecaf4c2d5c (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.java6
-rw-r--r--src/com/android/deskclock/data/TimerNotificationBuilderPreN.java48
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