diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 370cd72098573..79bf73861bef1 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -5320,6 +5320,21 @@ Battery Saver won\u2019t reactivate until battery low again Battery has been charged to a sufficient level. Battery Saver won\u2019t reactivate until the battery is low again. + + Phone %1$s charged + + Tablet %1$s charged + + Device %1$s charged + + Battery Saver is off. Features no longer restricted. + + Battery Saver turned off. Features no longer restricted. Folder diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 0562f4c22365d..012f736d5ee39 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3653,6 +3653,9 @@ + + + diff --git a/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java b/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java index b7be768ee5240..fe0b9a6acc859 100644 --- a/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java +++ b/services/core/java/com/android/server/power/batterysaver/BatterySaverStateMachine.java @@ -45,6 +45,7 @@ import com.android.server.EventLogTags; import com.android.server.power.BatterySaverStateMachineProto; import java.io.PrintWriter; +import java.text.NumberFormat; /** * Decides when to enable / disable battery saver. @@ -791,7 +792,7 @@ public class BatterySaverStateMachine { manager.notify(DYNAMIC_MODE_NOTIFICATION_ID, buildNotification(DYNAMIC_MODE_NOTIF_CHANNEL_ID, - R.string.dynamic_mode_notification_title, + mContext.getResources().getString(R.string.dynamic_mode_notification_title), R.string.dynamic_mode_notification_summary, Intent.ACTION_POWER_USAGE_SUMMARY)); } @@ -801,10 +802,13 @@ public class BatterySaverStateMachine { ensureNotificationChannelExists(manager, BATTERY_SAVER_NOTIF_CHANNEL_ID, R.string.battery_saver_notification_channel_name); + final String percentage = NumberFormat.getPercentInstance() + .format((double) mBatteryLevel / 100.0); manager.notify(STICKY_AUTO_DISABLED_NOTIFICATION_ID, buildNotification(BATTERY_SAVER_NOTIF_CHANNEL_ID, - R.string.battery_saver_sticky_disabled_notification_title, - R.string.battery_saver_sticky_disabled_notification_summary, + mContext.getResources().getString( + R.string.battery_saver_charged_notification_title, percentage), + R.string.battery_saver_off_notification_summary, Settings.ACTION_BATTERY_SAVER_SETTINGS)); } @@ -816,7 +820,7 @@ public class BatterySaverStateMachine { manager.createNotificationChannel(channel); } - private Notification buildNotification(@NonNull String channelId, @StringRes int titleId, + private Notification buildNotification(@NonNull String channelId, @NonNull String title, @StringRes int summaryId, @NonNull String intentAction) { Resources res = mContext.getResources(); Intent intent = new Intent(intentAction); @@ -827,11 +831,12 @@ public class BatterySaverStateMachine { return new Notification.Builder(mContext, channelId) .setSmallIcon(R.drawable.ic_battery) - .setContentTitle(res.getString(titleId)) + .setContentTitle(title) .setContentText(summary) .setContentIntent(batterySaverIntent) .setStyle(new Notification.BigTextStyle().bigText(summary)) .setOnlyAlertOnce(true) + .setAutoCancel(true) .build(); }