Minor UI improvements and showing of unplugged duration.
This commit is contained in:
@@ -190,6 +190,7 @@
|
|||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<action android:name="com.android.settings.SOUND_SETTINGS" />
|
<action android:name="com.android.settings.SOUND_SETTINGS" />
|
||||||
<action android:name="com.android.settings.DISPLAY_SETTINGS" />
|
<action android:name="com.android.settings.DISPLAY_SETTINGS" />
|
||||||
|
<action android:name="android.settings.DISPLAY_SETTINGS" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.VOICE_LAUNCH" />
|
<category android:name="android.intent.category.VOICE_LAUNCH" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 152 B |
@@ -27,8 +27,9 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_marginBottom="2dip"
|
android:layout_marginBottom="4dip"
|
||||||
android:layout_marginTop="2dip" />
|
android:layout_marginTop="4dip"
|
||||||
|
android:layout_marginLeft="4dip" />
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/value"
|
android:id="@+id/value"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -37,7 +38,7 @@
|
|||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:layout_marginBottom="2dip"
|
android:layout_marginBottom="4dip"
|
||||||
android:layout_marginTop="2dip"
|
android:layout_marginTop="4dip"
|
||||||
android:layout_marginRight="4dip"/>
|
android:layout_marginRight="10dip"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
@@ -96,6 +96,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/controls_section_title"
|
android:id="@+id/controls_section_title"
|
||||||
style="?android:attr/listSeparatorTextViewStyle"
|
style="?android:attr/listSeparatorTextViewStyle"
|
||||||
|
android:layout_marginTop="6dip"
|
||||||
android:text="@string/controls_subtitle" />
|
android:text="@string/controls_subtitle" />
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
@@ -130,6 +131,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/packages_section_title"
|
android:id="@+id/packages_section_title"
|
||||||
style="?android:attr/listSeparatorTextViewStyle"
|
style="?android:attr/listSeparatorTextViewStyle"
|
||||||
|
android:layout_marginTop="6dip"
|
||||||
android:text="@string/packages_subtitle" />
|
android:text="@string/packages_subtitle" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@@ -1532,16 +1532,16 @@ found in the list of installed applications.</string>
|
|||||||
<string name="battery_history_starts">Starts: <xliff:g id="starts">%1$d</xliff:g></string>
|
<string name="battery_history_starts">Starts: <xliff:g id="starts">%1$d</xliff:g></string>
|
||||||
|
|
||||||
<!-- Used to show an amount of time in the form "d days, h hours, m minutes, s seconds" in BatteryHistory -->
|
<!-- Used to show an amount of time in the form "d days, h hours, m minutes, s seconds" in BatteryHistory -->
|
||||||
<string name="battery_history_days"><xliff:g id="days">%1$d</xliff:g> d, <xliff:g id="hours">%2$d</xliff:g> h, <xliff:g id="minutes">%3$d</xliff:g> m, <xliff:g id="seconds">%4$d</xliff:g> s</string>
|
<string name="battery_history_days"><xliff:g id="days">%1$d</xliff:g>d <xliff:g id="hours">%2$d</xliff:g>h <xliff:g id="minutes">%3$d</xliff:g>m <xliff:g id="seconds">%4$d</xliff:g>s</string>
|
||||||
|
|
||||||
<!-- Used to show an amount of time in the form "h hours, m minutes, s seconds" in BatteryHistory -->
|
<!-- Used to show an amount of time in the form "h hours, m minutes, s seconds" in BatteryHistory -->
|
||||||
<string name="battery_history_hours"><xliff:g id="hours">%1$d</xliff:g> h, <xliff:g id="minutes">%2$d</xliff:g> m, <xliff:g id="seconds">%3$d</xliff:g> s</string>
|
<string name="battery_history_hours"><xliff:g id="hours">%1$d</xliff:g>h <xliff:g id="minutes">%2$d</xliff:g>m <xliff:g id="seconds">%3$d</xliff:g>s</string>
|
||||||
|
|
||||||
<!-- Used to show an amount of time in the form "m minutes, s seconds" in BatteryHistory -->
|
<!-- Used to show an amount of time in the form "m minutes, s seconds" in BatteryHistory -->
|
||||||
<string name="battery_history_minutes"><xliff:g id="minutes">%1$d</xliff:g> m, <xliff:g id="seconds">%2$d</xliff:g> s</string>
|
<string name="battery_history_minutes"><xliff:g id="minutes">%1$d</xliff:g>m <xliff:g id="seconds">%2$d</xliff:g>s</string>
|
||||||
|
|
||||||
<!-- Used to show an amount of time in the form "s seconds" in BatteryHistory -->
|
<!-- Used to show an amount of time in the form "s seconds" in BatteryHistory -->
|
||||||
<string name="battery_history_seconds"><xliff:g id="seconds">%1$d</xliff:g> s</string>
|
<string name="battery_history_seconds"><xliff:g id="seconds">%1$d</xliff:g>s</string>
|
||||||
|
|
||||||
<!-- Used to head a list of packages that share a given user id BatteryHistory -->
|
<!-- Used to head a list of packages that share a given user id BatteryHistory -->
|
||||||
<string name="battery_history_packages_sharing_this_uid">Packages sharing this UID:</string>
|
<string name="battery_history_packages_sharing_this_uid">Packages sharing this UID:</string>
|
||||||
@@ -1634,6 +1634,8 @@ found in the list of installed applications.</string>
|
|||||||
<string name="battery_since_unplugged">Battery usage since unplugged</string>
|
<string name="battery_since_unplugged">Battery usage since unplugged</string>
|
||||||
<!-- Battery usage since user reset the stats -->
|
<!-- Battery usage since user reset the stats -->
|
||||||
<string name="battery_since_reset">Battery usage since reset</string>
|
<string name="battery_since_reset">Battery usage since reset</string>
|
||||||
|
<!-- Battery usage duration -->
|
||||||
|
<string name="battery_stats_duration">Usage duration - <xliff:g id="time">%1$s</xliff:g></string>
|
||||||
<!-- CPU awake time title -->
|
<!-- CPU awake time title -->
|
||||||
<string name="awake">Device awake time</string>
|
<string name="awake">Device awake time</string>
|
||||||
<!-- Wifi on time -->
|
<!-- Wifi on time -->
|
||||||
|
@@ -16,5 +16,6 @@
|
|||||||
|
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:title="@string/battery_since_unplugged">
|
android:title="@string/battery_since_unplugged">
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="app_list"/>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -51,8 +51,8 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
public static final int ACTION_DISPLAY_SETTINGS = 1;
|
public static final int ACTION_DISPLAY_SETTINGS = 1;
|
||||||
public static final int ACTION_WIFI_SETTINGS = 2;
|
public static final int ACTION_WIFI_SETTINGS = 2;
|
||||||
public static final int ACTION_BLUETOOTH_SETTINGS = 3;
|
public static final int ACTION_BLUETOOTH_SETTINGS = 3;
|
||||||
public static final int ACTION_FORCE_STOP = 4;
|
public static final int ACTION_WIRELESS_SETTINGS = 4;
|
||||||
public static final int ACTION_UNINSTALL = 5;
|
public static final int ACTION_APP_DETAILS = 6;
|
||||||
|
|
||||||
public static final int USAGE_SINCE_UNPLUGGED = 1;
|
public static final int USAGE_SINCE_UNPLUGGED = 1;
|
||||||
public static final int USAGE_SINCE_RESET = 2;
|
public static final int USAGE_SINCE_RESET = 2;
|
||||||
@@ -66,10 +66,6 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
public static final String EXTRA_DETAIL_VALUES = "values";
|
public static final String EXTRA_DETAIL_VALUES = "values";
|
||||||
public static final String EXTRA_DRAIN_TYPE = "drainType";
|
public static final String EXTRA_DRAIN_TYPE = "drainType";
|
||||||
|
|
||||||
private static final int SECONDS_PER_MINUTE = 60;
|
|
||||||
private static final int SECONDS_PER_HOUR = 60 * 60;
|
|
||||||
private static final int SECONDS_PER_DAY = 24 * 60 * 60;
|
|
||||||
|
|
||||||
private static final boolean DEBUG = true;
|
private static final boolean DEBUG = true;
|
||||||
private String mTitle;
|
private String mTitle;
|
||||||
private double mPercentage;
|
private double mPercentage;
|
||||||
@@ -135,10 +131,10 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
switch (mTypes[i]) {
|
switch (mTypes[i]) {
|
||||||
case R.string.usage_type_data_recv:
|
case R.string.usage_type_data_recv:
|
||||||
case R.string.usage_type_data_send:
|
case R.string.usage_type_data_send:
|
||||||
value = formatBytes(mValues[i]);
|
value = Utils.formatBytes(this, mValues[i]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
value = formatTime(mValues[i]);
|
value = Utils.formatElapsedTime(this, mValues[i]);
|
||||||
}
|
}
|
||||||
ViewGroup item = (ViewGroup) inflater.inflate(R.layout.power_usage_detail_item_text,
|
ViewGroup item = (ViewGroup) inflater.inflate(R.layout.power_usage_detail_item_text,
|
||||||
null);
|
null);
|
||||||
@@ -165,15 +161,12 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
|
startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
|
||||||
break;
|
break;
|
||||||
case ACTION_WIFI_SETTINGS:
|
case ACTION_WIFI_SETTINGS:
|
||||||
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
|
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
|
||||||
break;
|
break;
|
||||||
case ACTION_BLUETOOTH_SETTINGS:
|
case ACTION_BLUETOOTH_SETTINGS:
|
||||||
startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
|
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
|
||||||
break;
|
break;
|
||||||
case ACTION_FORCE_STOP:
|
case ACTION_APP_DETAILS:
|
||||||
killProcesses();
|
|
||||||
break;
|
|
||||||
case ACTION_UNINSTALL:
|
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
intent.setClass(this, InstalledAppDetails.class);
|
intent.setClass(this, InstalledAppDetails.class);
|
||||||
intent.putExtra("com.android.settings.ApplicationPkgName", mPackages[0]);
|
intent.putExtra("com.android.settings.ApplicationPkgName", mPackages[0]);
|
||||||
@@ -199,18 +192,17 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
if (uid == 0 || !isSystem) {
|
if (uid == 0 || !isSystem) {
|
||||||
switch (mDrainType) {
|
switch (mDrainType) {
|
||||||
case APP:
|
case APP:
|
||||||
label1 = getString(R.string.battery_action_stop);
|
//label1 = getString(R.string.battery_action_stop);
|
||||||
label2 = getString(R.string.battery_action_app_details);
|
label2 = getString(R.string.battery_action_app_details);
|
||||||
mAction1 = ACTION_FORCE_STOP;
|
mAction2 = ACTION_APP_DETAILS;
|
||||||
mAction2 = ACTION_UNINSTALL;
|
|
||||||
break;
|
break;
|
||||||
case SCREEN:
|
case SCREEN:
|
||||||
//label2 = getString(R.string.battery_action_display);
|
label2 = getString(R.string.battery_action_display);
|
||||||
//mAction2 = ACTION_DISPLAY_SETTINGS;
|
mAction2 = ACTION_DISPLAY_SETTINGS;
|
||||||
break;
|
break;
|
||||||
case WIFI:
|
case WIFI:
|
||||||
label2 = getString(R.string.battery_action_wifi);
|
label2 = getString(R.string.battery_action_wifi);
|
||||||
mAction2 = ACTION_WIFI_SETTINGS;
|
mAction2 = ACTION_WIRELESS_SETTINGS;
|
||||||
break;
|
break;
|
||||||
case BLUETOOTH:
|
case BLUETOOTH:
|
||||||
//label2 = getString(R.string.battery_action_bluetooth);
|
//label2 = getString(R.string.battery_action_bluetooth);
|
||||||
@@ -291,44 +283,4 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formatTime(double millis) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
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 > 0) {
|
|
||||||
sb.append(getString(R.string.battery_history_days, days, hours, minutes, seconds));
|
|
||||||
} else if (hours > 0) {
|
|
||||||
sb.append(getString(R.string.battery_history_hours, hours, minutes, seconds));
|
|
||||||
} else if (minutes > 0) {
|
|
||||||
sb.append(getString(R.string.battery_history_minutes, minutes, seconds));
|
|
||||||
} else {
|
|
||||||
sb.append(getString(R.string.battery_history_seconds, seconds));
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String formatBytes(double bytes) {
|
|
||||||
// TODO: I18N
|
|
||||||
if (bytes > 1000 * 1000) {
|
|
||||||
return String.format("%.2f MB", ((int) (bytes / 1000)) / 1000f);
|
|
||||||
} else if (bytes > 1024) {
|
|
||||||
return String.format("%.2f KB", ((int) (bytes / 10)) / 100f);
|
|
||||||
} else {
|
|
||||||
return String.format("%d bytes", (int) bytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -100,7 +100,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
|
|||||||
addPreferencesFromResource(R.xml.power_usage_summary);
|
addPreferencesFromResource(R.xml.power_usage_summary);
|
||||||
mBatteryInfo = IBatteryStats.Stub.asInterface(
|
mBatteryInfo = IBatteryStats.Stub.asInterface(
|
||||||
ServiceManager.getService("batteryinfo"));
|
ServiceManager.getService("batteryinfo"));
|
||||||
mAppListGroup = getPreferenceScreen();
|
mAppListGroup = (PreferenceGroup) findPreference("app_list");
|
||||||
mPowerProfile = new PowerProfile(this);
|
mPowerProfile = new PowerProfile(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
|
|||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
mAbort = false;
|
mAbort = false;
|
||||||
updateAppsList();
|
refreshStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -207,18 +207,18 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
|
|||||||
} else {
|
} else {
|
||||||
mStatsType = BatteryStats.STATS_TOTAL;
|
mStatsType = BatteryStats.STATS_TOTAL;
|
||||||
}
|
}
|
||||||
updateAppsList();
|
refreshStats();
|
||||||
return true;
|
return true;
|
||||||
case MENU_STATS_REFRESH:
|
case MENU_STATS_REFRESH:
|
||||||
mStats = null;
|
mStats = null;
|
||||||
updateAppsList();
|
refreshStats();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateAppsList() {
|
private void refreshStats() {
|
||||||
if (mStats == null) {
|
if (mStats == null) {
|
||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
@@ -263,12 +263,19 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateStatsPeriod(long duration) {
|
||||||
|
String durationString = Utils.formatElapsedTime(this, duration / 1000);
|
||||||
|
String label = getString(R.string.battery_stats_duration, durationString);
|
||||||
|
mAppListGroup.setTitle(label);
|
||||||
|
}
|
||||||
|
|
||||||
private void processAppUsage() {
|
private void processAppUsage() {
|
||||||
SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
|
SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
|
||||||
final int which = mStatsType;
|
final int which = mStatsType;
|
||||||
final double powerCpuNormal = mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_NORMAL);
|
final double powerCpuNormal = mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_NORMAL);
|
||||||
final double averageCostPerByte = getAverageDataCost();
|
final double averageCostPerByte = getAverageDataCost();
|
||||||
long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime(), which) * 1000;
|
long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which);
|
||||||
|
updateStatsPeriod(uSecTime);
|
||||||
SparseArray<? extends Uid> uidStats = mStats.getUidStats();
|
SparseArray<? extends Uid> uidStats = mStats.getUidStats();
|
||||||
final int NU = uidStats.size();
|
final int NU = uidStats.size();
|
||||||
for (int iu = 0; iu < NU; iu++) {
|
for (int iu = 0; iu < NU; iu++) {
|
||||||
|
84
src/com/android/settings/fuelgauge/Utils.java
Normal file
84
src/com/android/settings/fuelgauge/Utils.java
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2009 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains utility functions for formatting elapsed time and consumed bytes
|
||||||
|
*/
|
||||||
|
public class Utils {
|
||||||
|
private static final int SECONDS_PER_MINUTE = 60;
|
||||||
|
private static final int SECONDS_PER_HOUR = 60 * 60;
|
||||||
|
private static final int SECONDS_PER_DAY = 24 * 60 * 60;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns elapsed time for the given millis, in the following format:
|
||||||
|
* 2d 5h 40m 29s
|
||||||
|
* @param context the application context
|
||||||
|
* @param millis the elapsed time in milli seconds
|
||||||
|
* @return the formatted elapsed time
|
||||||
|
*/
|
||||||
|
public static String formatElapsedTime(Context context, double millis) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
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 > 0) {
|
||||||
|
sb.append(context.getString(R.string.battery_history_days,
|
||||||
|
days, hours, minutes, seconds));
|
||||||
|
} else if (hours > 0) {
|
||||||
|
sb.append(context.getString(R.string.battery_history_hours, hours, minutes, seconds));
|
||||||
|
} else if (minutes > 0) {
|
||||||
|
sb.append(context.getString(R.string.battery_history_minutes, minutes, seconds));
|
||||||
|
} else {
|
||||||
|
sb.append(context.getString(R.string.battery_history_seconds, seconds));
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats data size in KB, MB, from the given bytes.
|
||||||
|
* @param context the application context
|
||||||
|
* @param bytes data size in bytes
|
||||||
|
* @return the formatted size such as 4.52 MB or 245 KB or 332 bytes
|
||||||
|
*/
|
||||||
|
public static String formatBytes(Context context, double bytes) {
|
||||||
|
// TODO: I18N
|
||||||
|
if (bytes > 1000 * 1000) {
|
||||||
|
return String.format("%.2f MB", ((int) (bytes / 1000)) / 1000f);
|
||||||
|
} else if (bytes > 1024) {
|
||||||
|
return String.format("%.2f KB", ((int) (bytes / 10)) / 100f);
|
||||||
|
} else {
|
||||||
|
return String.format("%d bytes", (int) bytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user