Move some battery stuff to SettingsLib
So that it can be used in the battery detail panel Change-Id: I31eac974d29838726450940109b52d458f29c192
This commit is contained in:
@@ -164,23 +164,6 @@
|
|||||||
<!-- Title for a notification shown. -->
|
<!-- Title for a notification shown. -->
|
||||||
<string name="sdcard_setting" product="default">SD card</string>
|
<string name="sdcard_setting" product="default">SD card</string>
|
||||||
|
|
||||||
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
|
||||||
<string name="battery_info_status_unknown">Unknown</string>
|
|
||||||
<!-- [CHAR_LIMIT=20] Battery use screen. Battery status shown in chart label when charging from an unknown source. -->
|
|
||||||
<string name="battery_info_status_charging">Charging</string>
|
|
||||||
<!-- [CHAR_LIMIT=20] Battery use screen. Battery status shown in chart label when charging on AC. -->
|
|
||||||
<string name="battery_info_status_charging_ac">Charging on AC</string>
|
|
||||||
<!-- [CHAR_LIMIT=20] Battery use screen. Battery status shown in chart label when charging over USB. -->
|
|
||||||
<string name="battery_info_status_charging_usb">Charging over USB</string>
|
|
||||||
<!-- [CHAR_LIMIT=20] Battery use screen. Battery status shown in chart label when charging over a wireless connection. -->
|
|
||||||
<string name="battery_info_status_charging_wireless">Charging wirelessly</string>
|
|
||||||
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
|
||||||
<string name="battery_info_status_discharging">Not charging</string>
|
|
||||||
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
|
||||||
<string name="battery_info_status_not_charging">Not charging</string>
|
|
||||||
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
|
||||||
<string name="battery_info_status_full">Full</string>
|
|
||||||
|
|
||||||
<!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings -->
|
<!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings -->
|
||||||
<string name="bluetooth">Bluetooth</string>
|
<string name="bluetooth">Bluetooth</string>
|
||||||
<!-- Bluetooth settings screen, summary after selecting Discoverable check box [CHAR LIMIT=50] -->
|
<!-- Bluetooth settings screen, summary after selecting Discoverable check box [CHAR LIMIT=50] -->
|
||||||
@@ -3934,24 +3917,7 @@
|
|||||||
<string name="power_discharge_remaining"><xliff:g id="remain">%1$s</xliff:g> remaining</string>
|
<string name="power_discharge_remaining"><xliff:g id="remain">%1$s</xliff:g> remaining</string>
|
||||||
<!-- Display time remaining until battery is charged [CHAR_LIMIT=60] -->
|
<!-- Display time remaining until battery is charged [CHAR_LIMIT=60] -->
|
||||||
<string name="power_charge_remaining"><xliff:g id="until_charged">%1$s</xliff:g> to charge</string>
|
<string name="power_charge_remaining"><xliff:g id="until_charged">%1$s</xliff:g> to charge</string>
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when discharging with duration -->
|
|
||||||
<string name="power_discharging_duration"><xliff:g id="level">%1$s</xliff:g>
|
|
||||||
- approx. <xliff:g id="time">%2$s</xliff:g> left</string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when charging -->
|
|
||||||
<string name="power_charging"><xliff:g id="level">%1$s</xliff:g> -
|
|
||||||
<xliff:g id="state">%2$s</xliff:g></string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when charging with duration -->
|
|
||||||
<string name="power_charging_duration"><xliff:g id="level">%1$s</xliff:g> -
|
|
||||||
<xliff:g id="time">%2$s</xliff:g> until full</string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when charging with duration -->
|
|
||||||
<string name="power_charging_duration_ac"><xliff:g id="level">%1$s</xliff:g> -
|
|
||||||
<xliff:g id="time">%2$s</xliff:g> until full on AC</string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when charging with duration -->
|
|
||||||
<string name="power_charging_duration_usb"><xliff:g id="level">%1$s</xliff:g> -
|
|
||||||
<xliff:g id="time">%2$s</xliff:g> until full over USB</string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for battery level chart when charging with duration -->
|
|
||||||
<string name="power_charging_duration_wireless"><xliff:g id="level">%1$s</xliff:g> -
|
|
||||||
<xliff:g id="time">%2$s</xliff:g> until full from wireless</string>
|
|
||||||
<!-- [CHAR_LIMIT=40] Label for list of apps using battery in power use UI -->
|
<!-- [CHAR_LIMIT=40] Label for list of apps using battery in power use UI -->
|
||||||
<string name="power_usage_list_summary">Use since last full charge</string>
|
<string name="power_usage_list_summary">Use since last full charge</string>
|
||||||
<!-- Battery usage since unplugged -->
|
<!-- Battery usage since unplugged -->
|
||||||
|
@@ -88,7 +88,6 @@ import com.android.internal.util.UserIcons;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.text.NumberFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -96,7 +95,8 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import static android.content.Intent.EXTRA_USER;
|
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";
|
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) {
|
public static boolean isBatteryPresent(Intent batteryChangedIntent) {
|
||||||
return batteryChangedIntent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
|
return batteryChangedIntent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
|
||||||
}
|
}
|
||||||
@@ -285,44 +270,6 @@ public final class Utils {
|
|||||||
return formatPercentage(getBatteryLevel(batteryChangedIntent));
|
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(
|
public static void forcePrepareCustomPreferencesList(
|
||||||
ViewGroup parent, View child, ListView list, boolean ignoreSidePadding) {
|
ViewGroup parent, View child, ListView list, boolean ignoreSidePadding) {
|
||||||
list.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
|
list.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
|
||||||
|
@@ -26,7 +26,6 @@ import android.graphics.DashPathEffect;
|
|||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.Path;
|
import android.graphics.Path;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.BatteryManager;
|
|
||||||
import android.os.BatteryStats;
|
import android.os.BatteryStats;
|
||||||
import android.os.BatteryStats.HistoryItem;
|
import android.os.BatteryStats.HistoryItem;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
@@ -39,10 +38,9 @@ import android.util.Log;
|
|||||||
import android.util.TimeUtils;
|
import android.util.TimeUtils;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
|
import com.android.settingslib.BatteryInfo;
|
||||||
import libcore.icu.LocaleData;
|
import libcore.icu.LocaleData;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -509,7 +507,8 @@ public class BatteryHistoryChart extends View {
|
|||||||
|
|
||||||
mMaxPercentLabelString = Utils.formatPercentage(100);
|
mMaxPercentLabelString = Utils.formatPercentage(100);
|
||||||
mMinPercentLabelString = Utils.formatPercentage(0);
|
mMinPercentLabelString = Utils.formatPercentage(0);
|
||||||
mInfo = getBatteryInfo(getContext(), mBatteryBroadcast, mStats, elapsedRealtimeUs);
|
mInfo = BatteryInfo.getBatteryInfo(getContext(), mBatteryBroadcast, mStats,
|
||||||
|
elapsedRealtimeUs);
|
||||||
mDrainString = "";
|
mDrainString = "";
|
||||||
mChargeDurationString = "";
|
mChargeDurationString = "";
|
||||||
setContentDescription(mInfo.mChargeLabelString);
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -18,17 +18,13 @@ package com.android.settings.fuelgauge;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.IntentFilter;
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.os.BatteryStats;
|
import android.os.BatteryStats;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.SystemClock;
|
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceGroup;
|
import android.support.v7.preference.PreferenceGroup;
|
||||||
@@ -40,13 +36,13 @@ import android.view.MenuItem;
|
|||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.os.BatterySipper;
|
import com.android.internal.os.BatterySipper;
|
||||||
import com.android.internal.os.BatterySipper.DrainType;
|
import com.android.internal.os.BatterySipper.DrainType;
|
||||||
import com.android.internal.os.BatteryStatsHelper;
|
|
||||||
import com.android.internal.os.PowerProfile;
|
import com.android.internal.os.PowerProfile;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Settings.HighPowerApplicationsActivity;
|
import com.android.settings.Settings.HighPowerApplicationsActivity;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.applications.ManageApplications;
|
import com.android.settings.applications.ManageApplications;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
|
import com.android.settingslib.BatteryInfo;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -451,25 +447,12 @@ public class PowerUsageSummary extends PowerUsageBase {
|
|||||||
public void setListening(boolean listening) {
|
public void setListening(boolean listening) {
|
||||||
if (listening) {
|
if (listening) {
|
||||||
// TODO: Listen.
|
// TODO: Listen.
|
||||||
new AsyncTask<Void, Void, BatteryStats>() {
|
BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() {
|
||||||
@Override
|
@Override
|
||||||
protected BatteryStats doInBackground(Void... params) {
|
public void onBatteryInfoLoaded(BatteryInfo info) {
|
||||||
BatteryStatsHelper statsHelper = new BatteryStatsHelper(mContext, true);
|
mLoader.setSummary(SummaryProvider.this, info.mChargeLabelString);
|
||||||
statsHelper.create((Bundle) null);
|
|
||||||
return statsHelper.getStats();
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
@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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user