From 18d2b32423855bb9dceb044d87e5d3543c4575a0 Mon Sep 17 00:00:00 2001 From: Muyuan Li Date: Thu, 31 Mar 2016 13:53:56 -0700 Subject: [PATCH] SettingsLib: refactor for extensibility. Add short version of charging / discharging labels. Extended getBatteryInfo method to take in additional flag for short version labels. Change-Id: I499ce59493f1345c3084d48829ded5117d470e44 (cherry picked from commit e686bf4514d9c1116a4eaa8af285f44613e23b36) --- packages/SettingsLib/res/values/strings.xml | 25 ++++++++++++ .../com/android/settingslib/BatteryInfo.java | 38 ++++++++++++++----- .../src/com/android/settingslib/Utils.java | 18 ++++++--- 3 files changed, 66 insertions(+), 15 deletions(-) diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index fe3ef1a9b76bd..a560e3c521073 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -733,25 +733,44 @@ Approx. %1$s left + + %1$s left + %1$s - approx. %2$s left + + %1$s + - %2$s left + %1$s - %2$s %1$s - %2$s until full + + %1$s - + %2$s %1$s - %2$s until full on AC + + %1$s - + %2$s %1$s - %2$s until full over USB + + %1$s - + %2$s %1$s - %2$s until full from wireless + + %1$s - + %2$s Unknown @@ -759,10 +778,16 @@ Charging Charging on AC + + Charging Charging over USB + + Charging Charging wirelessly + + Charging Not charging diff --git a/packages/SettingsLib/src/com/android/settingslib/BatteryInfo.java b/packages/SettingsLib/src/com/android/settingslib/BatteryInfo.java index 6b29e2165c54f..fa1f91fe9fbc4 100644 --- a/packages/SettingsLib/src/com/android/settingslib/BatteryInfo.java +++ b/packages/SettingsLib/src/com/android/settingslib/BatteryInfo.java @@ -25,6 +25,7 @@ import android.os.BatteryStats.HistoryItem; import android.os.Bundle; import android.os.SystemClock; import android.text.format.Formatter; +import android.util.Log; import android.util.SparseIntArray; import com.android.internal.os.BatteryStatsHelper; import com.android.settingslib.graph.UsageView; @@ -95,6 +96,11 @@ public class BatteryInfo { } public static void getBatteryInfo(final Context context, final Callback callback) { + BatteryInfo.getBatteryInfo(context, callback, false); + } + + public static void getBatteryInfo(final Context context, final Callback callback, + boolean shortString) { new AsyncTask() { @Override protected BatteryStats doInBackground(Void... params) { @@ -109,14 +115,20 @@ public class BatteryInfo { Intent batteryBroadcast = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); BatteryInfo batteryInfo = BatteryInfo.getBatteryInfo(context, - batteryBroadcast, batteryStats, elapsedRealtimeUs); + batteryBroadcast, batteryStats, elapsedRealtimeUs, shortString); callback.onBatteryInfoLoaded(batteryInfo); } }.execute(); } public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast, - BatteryStats stats, long elapsedRealtimeUs) { + BatteryStats stats, long elapsedRealtimeUs) { + return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats, elapsedRealtimeUs, + false); + } + + public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast, + BatteryStats stats, long elapsedRealtimeUs, boolean shortString) { BatteryInfo info = new BatteryInfo(); info.mStats = stats; info.mBatteryLevel = Utils.getBatteryLevel(batteryBroadcast); @@ -129,9 +141,13 @@ public class BatteryInfo { info.remainingTimeUs = drainTime; String timeString = Formatter.formatShortElapsedTime(context, drainTime / 1000); - info.remainingLabel = resources.getString(R.string.power_remaining_duration_only, + info.remainingLabel = resources.getString( + shortString ? R.string.power_remaining_duration_only_short + : R.string.power_remaining_duration_only, timeString); - info.mChargeLabelString = resources.getString(R.string.power_discharging_duration, + info.mChargeLabelString = resources.getString( + shortString ? R.string.power_discharging_duration_short + : R.string.power_discharging_duration, info.batteryPercentString, timeString); } else { info.remainingLabel = null; @@ -140,7 +156,7 @@ public class BatteryInfo { } else { final long chargeTime = stats.computeChargeTimeRemaining(elapsedRealtimeUs); final String statusLabel = Utils.getBatteryStatus( - resources, batteryBroadcast); + resources, batteryBroadcast, shortString); final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) { @@ -151,13 +167,17 @@ public class BatteryInfo { int plugType = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); int resId; if (plugType == BatteryManager.BATTERY_PLUGGED_AC) { - resId = R.string.power_charging_duration_ac; + resId = shortString ? R.string.power_charging_duration_ac_short + : R.string.power_charging_duration_ac; } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { - resId = R.string.power_charging_duration_usb; + resId = shortString ? R.string.power_charging_duration_usb_short + : R.string.power_charging_duration_usb; } else if (plugType == BatteryManager.BATTERY_PLUGGED_WIRELESS) { - resId = R.string.power_charging_duration_wireless; + resId = shortString ? R.string.power_charging_duration_wireless_short + : R.string.power_charging_duration_wireless; } else { - resId = R.string.power_charging_duration; + resId = shortString ? R.string.power_charging_duration_short + : R.string.power_charging_duration; } info.remainingLabel = resources.getString(R.string.power_remaining_duration_only, timeString); diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 74c1ebdd2a79a..586f2690ba1fa 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -112,20 +112,26 @@ public class Utils { } public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) { - final Intent intent = batteryChangedIntent; + return Utils.getBatteryStatus(res, batteryChangedIntent, false); + } - int plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); - int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, + public static String getBatteryStatus(Resources res, Intent batteryChangedIntent, + boolean shortString) { + int plugType = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); + int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); String statusString; if (status == BatteryManager.BATTERY_STATUS_CHARGING) { int resId; if (plugType == BatteryManager.BATTERY_PLUGGED_AC) { - resId = R.string.battery_info_status_charging_ac; + resId = shortString ? R.string.battery_info_status_charging_ac_short + : R.string.battery_info_status_charging_ac; } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { - resId = R.string.battery_info_status_charging_usb; + resId = shortString ? R.string.battery_info_status_charging_usb_short + : R.string.battery_info_status_charging_usb; } else if (plugType == BatteryManager.BATTERY_PLUGGED_WIRELESS) { - resId = R.string.battery_info_status_charging_wireless; + resId = shortString ? R.string.battery_info_status_charging_wireless_short + : R.string.battery_info_status_charging_wireless; } else { resId = R.string.battery_info_status_charging; }