diff --git a/res/values/strings.xml b/res/values/strings.xml index be924f034a0..2f9ac53bea0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3279,27 +3279,6 @@ %1$dm - - %1$dd - - - %1$dd - %2$dh - - - %1$dh - - - %1$dh - %2$dm - - - %1$dm - - - %1$dm - %2$ds - Usage statistics @@ -3590,6 +3569,18 @@ %1$s remaining %1$s to charge + + %1$d%% + + %1$d%% + - approx. %2$s left + + %1$d%% - + %2$s + + %1$d%% - + %2$s + (%3$s until full) Battery use since unplugged diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 8abe30db027..e3335b8b467 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -444,9 +444,13 @@ public class Utils { } public static String getBatteryPercentage(Intent batteryChangedIntent) { + return String.valueOf(getBatteryLevel(batteryChangedIntent)) + "%"; + } + + public static int getBatteryLevel(Intent batteryChangedIntent) { int level = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); int scale = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); - return String.valueOf(level * 100 / scale) + "%"; + return (level * 100) / scale; } public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) { diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java index 58471a3b2e2..da6729c3a2a 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java +++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge; import android.content.Intent; import android.os.BatteryManager; +import android.text.format.Formatter; import com.android.settings.R; import android.content.Context; @@ -413,24 +414,36 @@ public class BatteryHistoryChart extends View { //mDurationString = getContext().getString(R.string.battery_stats_on_battery, // durationString); mDurationString = Utils.formatElapsedTime(getContext(), mHistEnd - mHistStart, true); - mDrainString = com.android.settings.Utils.getBatteryPercentage(mBatteryBroadcast); - mChargeLabelString = com.android.settings.Utils.getBatteryStatus(getResources(), - mBatteryBroadcast); - final long drainTime = mStats.computeBatteryTimeRemaining(elapsedRealtimeUs); - final long chargeTime = mStats.computeChargeTimeRemaining(elapsedRealtimeUs); + int batteryLevel = com.android.settings.Utils.getBatteryLevel(mBatteryBroadcast); final int status = mBatteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); - if (drainTime > 0) { - String timeString = Utils.formatShortElapsedTime(getContext(),drainTime / 1000); - mChargeDurationString = getContext().getResources().getString( - R.string.power_discharge_remaining, timeString); - } else if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) { - String timeString = Utils.formatShortElapsedTime(getContext(), chargeTime / 1000); - mChargeDurationString = getContext().getResources().getString( - R.string.power_charge_remaining, timeString); + if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { + final long drainTime = mStats.computeBatteryTimeRemaining(elapsedRealtimeUs); + if (drainTime > 0) { + String timeString = Formatter.formatShortElapsedTime(getContext(), + drainTime / 1000); + mChargeLabelString = getContext().getResources().getString( + R.string.power_discharging_duration, batteryLevel, timeString); + } else { + mChargeLabelString = getContext().getResources().getString( + R.string.power_discharging, batteryLevel); + } } else { - mChargeDurationString = ""; + final long chargeTime = mStats.computeChargeTimeRemaining(elapsedRealtimeUs); + final String statusLabel = com.android.settings.Utils.getBatteryStatus(getResources(), + mBatteryBroadcast); + if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) { + String timeString = Formatter.formatShortElapsedTime(getContext(), + chargeTime / 1000); + mChargeLabelString = getContext().getResources().getString( + R.string.power_charging_duration, batteryLevel, statusLabel, timeString); + } else { + mChargeLabelString = getContext().getResources().getString( + R.string.power_charging, batteryLevel, statusLabel); + } } + mDrainString = ""; + mChargeDurationString = ""; } @Override diff --git a/src/com/android/settings/fuelgauge/Utils.java b/src/com/android/settings/fuelgauge/Utils.java index c88b0d2fbbc..9a06c9f2fcb 100644 --- a/src/com/android/settings/fuelgauge/Utils.java +++ b/src/com/android/settings/fuelgauge/Utils.java @@ -81,45 +81,4 @@ public class Utils { } return sb.toString(); } - - /** - * Returns elapsed time for the given millis, in the following format: - * 2d 5h; will include at most two units, can go down to seconds precision. - * @param context the application context - * @param millis the elapsed time in milli seconds - * @return the formatted elapsed time - */ - public static String formatShortElapsedTime(Context context, double millis) { - int seconds = (int) Math.floor(millis / 1000); - - int days = 0, hours = 0, minutes = 0; - if (seconds >= SECONDS_PER_DAY) { - days = seconds / SECONDS_PER_DAY; - seconds -= days * SECONDS_PER_DAY; - } - if (seconds >= SECONDS_PER_HOUR) { - hours = seconds / SECONDS_PER_HOUR; - seconds -= hours * SECONDS_PER_HOUR; - } - if (seconds >= SECONDS_PER_MINUTE) { - minutes = seconds / SECONDS_PER_MINUTE; - seconds -= minutes * SECONDS_PER_MINUTE; - } - if (days >= 4) { - return context.getString(R.string.battery_history_days_only, days); - } else if (days > 0) { - return context.getString(R.string.battery_history_days_and_hours, days, hours); - } else if (hours >= 12) { - return context.getString(R.string.battery_history_hours_only, hours); - } else if (hours > 0) { - return context.getString(R.string.battery_history_hours_and_minutes, hours, minutes); - } else if (minutes >= 10) { - return context.getString(R.string.battery_history_minutes_only, minutes); - } else if (minutes > 0) { - return context.getString(R.string.battery_history_minutes_and_seconds, minutes, - seconds); - } else { - return context.getString(R.string.battery_history_seconds, seconds); - } - } }