Move some battery stuff to SettingsLib
So that it can be used in the battery detail panel
Change-Id: I31eac974d29838726450940109b52d458f29c192
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index ddea92b..468baa9 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -88,7 +88,6 @@
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 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 @@
}
}
- /** 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 @@
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 6c4d457..7b89fb1 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -26,7 +26,6 @@
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.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 @@
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 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 25c0fc2..153ccd7 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -18,17 +18,13 @@
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 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 void setListening(boolean listening) {
if (listening) {
// TODO: Listen.
- new AsyncTask<Void, Void, BatteryStats>() {
+ 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();
+ });
}
}
}