From 27985e1f922eeb75da3214a7f88c63ac34dc4bad Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 8 Jan 2016 14:13:05 -0500 Subject: [PATCH] Move some battery stuff to SettingsLib So that it can be used in the battery detail panel Change-Id: I31eac974d29838726450940109b52d458f29c192 --- res/values/strings.xml | 36 +---------- src/com/android/settings/Utils.java | 57 +---------------- .../fuelgauge/BatteryHistoryChart.java | 62 +------------------ .../settings/fuelgauge/PowerUsageSummary.java | 27 ++------ 4 files changed, 11 insertions(+), 171 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index e7a77118150..1c0460f4d1d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -164,23 +164,6 @@ SD card - - Unknown - - Charging - - Charging on AC - - Charging over USB - - Charging wirelessly - - Not charging - - Not charging - - Full - Bluetooth @@ -3934,24 +3917,7 @@ %1$s remaining %1$s to charge - - %1$s - - approx. %2$s left - - %1$s - - %2$s - - %1$s - - %2$s until full - - %1$s - - %2$s until full on AC - - %1$s - - %2$s until full over USB - - %1$s - - %2$s until full from wireless + Use since last full charge diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index ddea92b24be..468baa90883 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -88,7 +88,6 @@ import com.android.internal.util.UserIcons; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; -import java.text.NumberFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -96,7 +95,8 @@ import java.util.Locale; import static android.content.Intent.EXTRA_USER; -public final class Utils { +public final class Utils extends com.android.settingslib.Utils { + private static final String TAG = "Settings"; /** @@ -262,21 +262,6 @@ public final class Utils { } } - /** Formats the ratio of amount/total as a percentage. */ - public static String formatPercentage(long amount, long total) { - return formatPercentage(((double) amount) / total); - } - - /** Formats an integer from 0..100 as a percentage. */ - public static String formatPercentage(int percentage) { - return formatPercentage(((double) percentage) / 100.0); - } - - /** Formats a double from 0.0..1.0 as a percentage. */ - private static String formatPercentage(double percentage) { - return NumberFormat.getPercentInstance().format(percentage); - } - public static boolean isBatteryPresent(Intent batteryChangedIntent) { return batteryChangedIntent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true); } @@ -285,44 +270,6 @@ public final class Utils { return formatPercentage(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 (level * 100) / scale; - } - - public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) { - final Intent intent = batteryChangedIntent; - - int plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); - int status = intent.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; - } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { - resId = R.string.battery_info_status_charging_usb; - } else if (plugType == BatteryManager.BATTERY_PLUGGED_WIRELESS) { - resId = R.string.battery_info_status_charging_wireless; - } else { - resId = R.string.battery_info_status_charging; - } - statusString = res.getString(resId); - } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { - statusString = res.getString(R.string.battery_info_status_discharging); - } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { - statusString = res.getString(R.string.battery_info_status_not_charging); - } else if (status == BatteryManager.BATTERY_STATUS_FULL) { - statusString = res.getString(R.string.battery_info_status_full); - } else { - statusString = res.getString(R.string.battery_info_status_unknown); - } - - return statusString; - } - public static void forcePrepareCustomPreferencesList( ViewGroup parent, View child, ListView list, boolean ignoreSidePadding) { list.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java index 6c4d45774fd..7b89fb1f4de 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java +++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java @@ -26,7 +26,6 @@ import android.graphics.DashPathEffect; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Typeface; -import android.os.BatteryManager; import android.os.BatteryStats; import android.os.BatteryStats.HistoryItem; import android.os.SystemClock; @@ -39,10 +38,9 @@ import android.util.Log; import android.util.TimeUtils; import android.util.TypedValue; import android.view.View; - import com.android.settings.R; import com.android.settings.Utils; - +import com.android.settingslib.BatteryInfo; import libcore.icu.LocaleData; import java.util.ArrayList; @@ -509,7 +507,8 @@ public class BatteryHistoryChart extends View { mMaxPercentLabelString = Utils.formatPercentage(100); mMinPercentLabelString = Utils.formatPercentage(0); - mInfo = getBatteryInfo(getContext(), mBatteryBroadcast, mStats, elapsedRealtimeUs); + mInfo = BatteryInfo.getBatteryInfo(getContext(), mBatteryBroadcast, mStats, + elapsedRealtimeUs); mDrainString = ""; mChargeDurationString = ""; setContentDescription(mInfo.mChargeLabelString); @@ -1359,59 +1358,4 @@ public class BatteryHistoryChart extends View { } } } - - public static class BatteryInfo { - public String mChargeLabelString; - public int mBatteryLevel; - public boolean mDischarging = true; - public long remainingTimeUs = 0; - } - - public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast, - BatteryStats stats, long elapsedRealtimeUs) { - BatteryInfo info = new BatteryInfo(); - info.mBatteryLevel = com.android.settings.Utils.getBatteryLevel(batteryBroadcast); - String batteryPercentString = Utils.formatPercentage(info.mBatteryLevel); - if (batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) == 0) { - final long drainTime = stats.computeBatteryTimeRemaining(elapsedRealtimeUs); - if (drainTime > 0) { - info.remainingTimeUs = drainTime; - String timeString = Formatter.formatShortElapsedTime(context, - drainTime / 1000); - info.mChargeLabelString = context.getResources().getString( - R.string.power_discharging_duration, batteryPercentString, timeString); - } else { - info.mChargeLabelString = batteryPercentString; - } - } else { - final long chargeTime = stats.computeChargeTimeRemaining(elapsedRealtimeUs); - final String statusLabel = com.android.settings.Utils.getBatteryStatus( - context.getResources(), batteryBroadcast); - final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS, - BatteryManager.BATTERY_STATUS_UNKNOWN); - if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) { - info.mDischarging = false; - info.remainingTimeUs = chargeTime; - String timeString = Formatter.formatShortElapsedTime(context, - chargeTime / 1000); - int plugType = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); - int resId; - if (plugType == BatteryManager.BATTERY_PLUGGED_AC) { - resId = R.string.power_charging_duration_ac; - } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { - resId = R.string.power_charging_duration_usb; - } else if (plugType == BatteryManager.BATTERY_PLUGGED_WIRELESS) { - resId = R.string.power_charging_duration_wireless; - } else { - resId = R.string.power_charging_duration; - } - info.mChargeLabelString = context.getResources().getString( - resId, batteryPercentString, timeString); - } else { - info.mChargeLabelString = context.getResources().getString( - R.string.power_charging, batteryPercentString, statusLabel); - } - } - return info; - } } diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 25c0fc29cb7..153ccd7776f 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -18,17 +18,13 @@ package com.android.settings.fuelgauge; import android.app.Activity; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.graphics.drawable.Drawable; -import android.os.AsyncTask; import android.os.BatteryStats; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Process; -import android.os.SystemClock; import android.os.UserHandle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; @@ -40,13 +36,13 @@ import android.view.MenuItem; import com.android.internal.logging.MetricsLogger; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper.DrainType; -import com.android.internal.os.BatteryStatsHelper; import com.android.internal.os.PowerProfile; import com.android.settings.R; import com.android.settings.Settings.HighPowerApplicationsActivity; import com.android.settings.SettingsActivity; import com.android.settings.applications.ManageApplications; import com.android.settings.dashboard.SummaryLoader; +import com.android.settingslib.BatteryInfo; import java.util.ArrayList; import java.util.Collections; @@ -451,25 +447,12 @@ public class PowerUsageSummary extends PowerUsageBase { public void setListening(boolean listening) { if (listening) { // TODO: Listen. - new AsyncTask() { + BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() { @Override - protected BatteryStats doInBackground(Void... params) { - BatteryStatsHelper statsHelper = new BatteryStatsHelper(mContext, true); - statsHelper.create((Bundle) null); - return statsHelper.getStats(); + public void onBatteryInfoLoaded(BatteryInfo info) { + mLoader.setSummary(SummaryProvider.this, info.mChargeLabelString); } - - @Override - protected void onPostExecute(BatteryStats batteryStats) { - final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000; - Intent batteryBroadcast = mContext.registerReceiver(null, - new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - BatteryHistoryChart.BatteryInfo batteryInfo = BatteryHistoryChart - .getBatteryInfo(mContext, batteryBroadcast, batteryStats, - elapsedRealtimeUs); - mLoader.setSummary(SummaryProvider.this, batteryInfo.mChargeLabelString); - } - }.execute(); + }); } } }