summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2009-06-19 09:27:35 -0700
committerAmith Yamasani <yamasani@google.com>2009-06-25 00:40:50 -0700
commit0f1e11e219c9e89bb4a939cd864eb03087e784be (patch)
treed48f409383ea3b6d667eb2c9a25238d99f9a9145
parenta54672f3a983766cf1dce754b3887807fcb723fa (diff)
downloadpackages_apps_Settings-0f1e11e219c9e89bb4a939cd864eb03087e784be.tar.gz
packages_apps_Settings-0f1e11e219c9e89bb4a939cd864eb03087e784be.tar.bz2
packages_apps_Settings-0f1e11e219c9e89bb4a939cd864eb03087e784be.zip
Track native processes.
Add gauge to detail screen and make it look like the item from summary screen. Some string changes.
-rw-r--r--res/layout/power_usage_details.xml81
-rw-r--r--res/layout/preference_powergauge.xml2
-rw-r--r--res/values/strings.xml18
-rw-r--r--res/xml/power_usage_summary.xml5
-rw-r--r--src/com/android/settings/fuelgauge/PercentageBar.java67
-rw-r--r--src/com/android/settings/fuelgauge/PowerGaugePreference.java44
-rw-r--r--src/com/android/settings/fuelgauge/PowerUsageDetail.java78
-rw-r--r--src/com/android/settings/fuelgauge/PowerUsageSummary.java51
8 files changed, 240 insertions, 106 deletions
diff --git a/res/layout/power_usage_details.xml b/res/layout/power_usage_details.xml
index 8aa625f66..ea7cfb346 100644
--- a/res/layout/power_usage_details.xml
+++ b/res/layout/power_usage_details.xml
@@ -22,55 +22,70 @@
android:id="@+id/all_details"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:paddingRight="6dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:orientation="vertical">
- <!-- Details header - icon, label and percentage -->
- <RelativeLayout
+ <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical">
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:paddingLeft="12dip"
+ android:paddingRight="?android:attr/scrollbarSize">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="48dip"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="6dip"
+ android:layout_gravity="center" />
- <LinearLayout
- android:orientation="vertical"
- android:layout_alignParentLeft="true"
- android:layout_width="fill_parent"
+ <RelativeLayout
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingTop="6dip"
- android:paddingBottom="6dip"
- android:paddingRight="6dip"
- android:paddingLeft="6dip" >
- <!-- application name -->
+ android:layout_marginRight="8dip"
+ android:layout_marginTop="2dip"
+ android:layout_marginBottom="6dip"
+ android:layout_weight="1">
+
<TextView android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textStyle="bold"
android:singleLine="true"
+ android:layout_marginTop="2dip"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@+id/battery_percentage"
android:ellipsize="marquee"
- android:layout_marginBottom="2dip" />
- <!-- application version -->
+ android:textAppearance="?android:attr/textAppearanceMedium"/>
<TextView android:id="@+id/battery_percentage"
- android:layout_marginTop="-4dip"
- android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall" />
- </LinearLayout>
-
- <!-- application icon -->
- <ImageView android:id="@+id/icon"
- android:layout_width="@android:dimen/app_icon_size"
- android:layout_height="@android:dimen/app_icon_size"
- android:layout_alignParentRight="true"
- android:paddingTop="6dip"
- android:paddingBottom="6dip"
- android:paddingRight="6dip"
- android:scaleType="fitCenter" />
- </RelativeLayout>
-
+ android:singleLine="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignBottom="@+id/name"
+ android:layout_gravity="bottom"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textStyle="bold"/>
+ <ImageView
+ android:id="@+id/gauge"
+ android:background="#80404040"
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent"
+ android:layout_marginTop="5dip"
+ android:layout_below="@id/battery_percentage"
+ android:layout_gravity="center_vertical" />
+ <TextView android:id="@+id/summary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignLeft="@id/gauge"
+ android:layout_below="@id/gauge"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ />
+ </RelativeLayout>
+ </LinearLayout>
<TextView
style="?android:attr/listSeparatorTextViewStyle"
diff --git a/res/layout/preference_powergauge.xml b/res/layout/preference_powergauge.xml
index b47f6c089..7aafec17b 100644
--- a/res/layout/preference_powergauge.xml
+++ b/res/layout/preference_powergauge.xml
@@ -61,7 +61,7 @@
<ImageView
android:id="@+id/appGauge"
- android:background="#2e2e2e"
+ android:background="#80404040"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginTop="5dip"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2dd2f84fc..63b343d58 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1647,7 +1647,13 @@ found in the list of installed applications.</string>
<!-- Battery usage since user reset the stats -->
<string name="battery_since_reset">Battery use since reset</string>
<!-- Battery usage duration -->
- <string name="battery_stats_duration">Use duration - <xliff:g id="time">%1$s</xliff:g></string>
+ <string name="battery_stats_duration"><xliff:g id="time">%1$s</xliff:g> since unplugged</string>
+ <!-- CPU awake time title -->
+ <string name="awake">Device awake time</string>
+ <!-- Wifi on time -->
+ <string name="wifi_on_time">WiFi on time</string>
+ <!-- Bluetooth on time -->
+ <string name="bluetooth_on_time">WiFi on time</string>
<!-- Application name and battery usage percentage -->
<string name="usage_name_percent"><xliff:g id="name">%1$s</xliff:g>" - "
<xliff:g id="percent">%2$s</xliff:g>"%%"</string>
@@ -1705,6 +1711,9 @@ found in the list of installed applications.</string>
<!-- Label for bluetooth settings -->
<string name="battery_action_bluetooth">Bluetooth settings</string>
+ <!-- Description for voice call detail -->
+ <string name="battery_desc_voice">Battery used by voice calls</string>
+
<!-- Description for standby detail -->
<string name="battery_desc_standby">Battery used when phone is idle</string>
@@ -1747,7 +1756,12 @@ found in the list of installed applications.</string>
<string name="menu_stats_total">Usage totals</string>
<!-- Menu label for refreshing with latest usage numbers -->
<string name="menu_stats_refresh">Refresh</string>
-
+
+ <!-- Label for kernel threads -->
+ <string name="process_kernel_label">Android OS</string>
+ <!-- Label for mediaserver process -->
+ <string name="process_mediaserver_label">Mediaserver</string>
+
<!-- Text-To-Speech (TTS) settings --><skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
<string name="tts_settings">Speech synthesis</string>
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 450e438c4..b49b1409f 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -15,7 +15,6 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/battery_since_unplugged">
- <PreferenceCategory
- android:key="app_list"/>
+ android:title="@string/battery_since_unplugged"
+ android:key="app_list">
</PreferenceScreen>
diff --git a/src/com/android/settings/fuelgauge/PercentageBar.java b/src/com/android/settings/fuelgauge/PercentageBar.java
new file mode 100644
index 000000000..1c4478bf4
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/PercentageBar.java
@@ -0,0 +1,67 @@
+/*
+ * 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.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.PixelFormat;
+import android.graphics.drawable.Drawable;
+
+/**
+ * A drawable for drawing a bar with a background.
+ */
+class PercentageBar extends Drawable {
+
+ Drawable bar;
+ double percent;
+ int lastWidth = -1;
+
+ @Override
+ public void draw(Canvas canvas) {
+ if (lastWidth == -1) {
+ lastWidth = getBarWidth();
+ bar.setBounds(0, 0, lastWidth, bar.getIntrinsicHeight());
+ }
+ bar.draw(canvas);
+ }
+
+ @Override
+ public int getOpacity() {
+ return PixelFormat.TRANSLUCENT;
+ }
+
+ @Override
+ public void setAlpha(int alpha) {
+ // Ignore
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter cf) {
+ // Ignore
+ }
+
+ private int getBarWidth() {
+ int width = (int) ((this.getBounds().width() * percent) / 100);
+ int intrinsicWidth = bar.getIntrinsicWidth();
+ return Math.max(width, intrinsicWidth);
+ }
+
+ @Override
+ public int getIntrinsicHeight() {
+ return bar.getIntrinsicHeight();
+ }
+}
diff --git a/src/com/android/settings/fuelgauge/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
index 5778b39bc..68f294c39 100644
--- a/src/com/android/settings/fuelgauge/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
@@ -37,7 +37,7 @@ import com.android.settings.fuelgauge.PowerUsageSummary.BatterySipper;
public class PowerGaugePreference extends Preference {
private Drawable mIcon;
- private GaugeDrawable mGauge;
+ private PercentageBar mGauge;
private double mValue;
private BatterySipper mInfo;
private double mPercent;
@@ -46,7 +46,7 @@ public class PowerGaugePreference extends Preference {
super(context);
setLayoutResource(R.layout.preference_powergauge);
mIcon = icon;
- mGauge = new GaugeDrawable();
+ mGauge = new PercentageBar();
mGauge.bar = context.getResources().getDrawable(R.drawable.app_gauge);
mInfo = info;
}
@@ -90,44 +90,4 @@ public class PowerGaugePreference extends Preference {
percentView.setText((int) (Math.ceil(mPercent)) + "%");
}
- static class GaugeDrawable extends Drawable {
- Drawable bar;
- double percent;
- int lastWidth = -1;
-
- @Override
- public void draw(Canvas canvas) {
- if (lastWidth == -1) {
- lastWidth = getBarWidth();
- bar.setBounds(0, 0, lastWidth, bar.getIntrinsicHeight());
- }
- bar.draw(canvas);
- }
-
- @Override
- public int getOpacity() {
- return PixelFormat.TRANSLUCENT;
- }
-
- @Override
- public void setAlpha(int alpha) {
- // Ignore
- }
-
- @Override
- public void setColorFilter(ColorFilter cf) {
- // Ignore
- }
-
- private int getBarWidth() {
- int width = (int) ((this.getBounds().width() * percent) / 100);
- int intrinsicWidth = bar.getIntrinsicWidth();
- return Math.max(width, intrinsicWidth);
- }
-
- @Override
- public int getIntrinsicHeight() {
- return bar.getIntrinsicHeight();
- }
- }
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index e36a8bc77..e78e0411e 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -27,10 +27,12 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.ImageView;
import android.widget.TextView;
import com.android.settings.InstalledAppDetails;
@@ -48,6 +50,17 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
APP
}
+ // Note: Must match the sequence of the DrainType
+ private static int[] sDrainTypeDesciptions = new int[] {
+ R.string.battery_desc_standby,
+ R.string.battery_desc_radio,
+ R.string.battery_desc_voice,
+ R.string.battery_desc_wifi,
+ R.string.battery_desc_bluetooth,
+ R.string.battery_desc_display,
+ R.string.battery_desc_apps
+ };
+
public static final int ACTION_DISPLAY_SETTINGS = 1;
public static final int ACTION_WIFI_SETTINGS = 2;
public static final int ACTION_BLUETOOTH_SETTINGS = 3;
@@ -59,16 +72,18 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
public static final String EXTRA_TITLE = "title";
public static final String EXTRA_PERCENT = "percent";
+ public static final String EXTRA_GAUGE = "gauge";
public static final String EXTRA_UID = "uid";
public static final String EXTRA_USAGE_SINCE = "since";
public static final String EXTRA_USAGE_DURATION = "duration";
- public static final String EXTRA_DETAIL_TYPES = "types";
- public static final String EXTRA_DETAIL_VALUES = "values";
- public static final String EXTRA_DRAIN_TYPE = "drainType";
+ public static final String EXTRA_DETAIL_TYPES = "types"; // Array of usage types (cpu, gps, etc)
+ public static final String EXTRA_DETAIL_VALUES = "values"; // Array of doubles
+ public static final String EXTRA_DRAIN_TYPE = "drainType"; // DrainType
+ public static final String EXTRA_ICON_PACKAGE = "iconPackage"; // String
+ public static final String EXTRA_ICON_ID = "iconId"; // Int
private static final boolean DEBUG = true;
private String mTitle;
- private double mPercentage;
private int mUsageSince;
private int[] mTypes;
private int mUid;
@@ -79,6 +94,8 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
private DrainType mDrainType;
private int mAction1;
private int mAction2;
+ private PercentageBar mGauge;
+ private Drawable mAppIcon;
private static final String TAG = "PowerUsageDetail";
private Button mButton1;
@@ -106,20 +123,51 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
private void createDetails() {
final Intent intent = getIntent();
mTitle = intent.getStringExtra(EXTRA_TITLE);
- mPercentage = intent.getDoubleExtra(EXTRA_PERCENT, -1);
+ final int percentage = intent.getIntExtra(EXTRA_PERCENT, 1);
+ final int gaugeValue = intent.getIntExtra(EXTRA_GAUGE, 1);
mUsageSince = intent.getIntExtra(EXTRA_USAGE_SINCE, USAGE_SINCE_UNPLUGGED);
mUid = intent.getIntExtra(EXTRA_UID, 0);
mDrainType = (DrainType) intent.getSerializableExtra(EXTRA_DRAIN_TYPE);
+ String iconPackage = intent.getStringExtra(EXTRA_ICON_PACKAGE);
+ int iconId = intent.getIntExtra(EXTRA_ICON_ID, 0);
+ if (!TextUtils.isEmpty(iconPackage)) {
+ try {
+ final PackageManager pm = getPackageManager();
+ ApplicationInfo ai = pm.getPackageInfo(iconPackage, 0).applicationInfo;
+ if (ai != null) {
+ mAppIcon = ai.loadIcon(pm);
+ }
+ } catch (NameNotFoundException nnfe) {
+ // Use default icon
+ }
+ } else if (iconId != 0) {
+ mAppIcon = getResources().getDrawable(iconId);
+ }
+ if (mAppIcon == null) {
+ mAppIcon = getPackageManager().getDefaultActivityIcon();
+ }
+ // Set the description
+ String summary = getDescriptionForDrainType();
+ ((TextView)findViewById(R.id.summary)).setText(summary);
+
mTypes = intent.getIntArrayExtra(EXTRA_DETAIL_TYPES);
mValues = intent.getDoubleArrayExtra(EXTRA_DETAIL_VALUES);
mTitleView = (TextView) findViewById(R.id.name);
mTitleView.setText(mTitle);
- // TODO: I18N
((TextView)findViewById(R.id.battery_percentage))
- .setText(String.format("%3.2f%% of battery usage since last unplugged", mPercentage));
+ .setText(String.format("%d%%", percentage));
+
+ ImageView gaugeImage = (ImageView) findViewById(R.id.gauge);
+ mGauge = new PercentageBar();
+ mGauge.percent = gaugeValue;
+ mGauge.bar = getResources().getDrawable(R.drawable.app_gauge);
+ gaugeImage.setImageDrawable(mGauge);
+ ImageView iconImage = (ImageView) findViewById(R.id.icon);
+ iconImage.setImageDrawable(mAppIcon);
+
mDetailsParent = (ViewGroup) findViewById(R.id.details);
LayoutInflater inflater = getLayoutInflater();
if (mTypes != null && mValues != null) {
@@ -181,7 +229,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
mAction1 = 0;
mAction2 = 0;
PackageManager pm = getPackageManager();
- String[] packages = pm.getPackagesForUid(mUid);
+ String[] packages = pm.getPackagesForUid(uid);
PackageInfo pi = null;
try {
pi = packages != null ? pm.getPackageInfo(packages[0], 0) : null;
@@ -189,12 +237,14 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
ApplicationInfo ai = pi != null? pi.applicationInfo : null;
boolean isSystem = ai != null? (ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0 : false;
- if (uid == 0 || !isSystem) {
+ if (uid < 1000 || !isSystem) {
switch (mDrainType) {
case APP:
//label1 = getString(R.string.battery_action_stop);
- label2 = getString(R.string.battery_action_app_details);
- mAction2 = ACTION_APP_DETAILS;
+ if (packages != null) {
+ label2 = getString(R.string.battery_action_app_details);
+ mAction2 = ACTION_APP_DETAILS;
+ }
break;
case SCREEN:
label2 = getString(R.string.battery_action_display);
@@ -246,7 +296,7 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
}
private void fillPackagesSection(int uid) {
- if (uid == 0) {
+ if (uid < 1) {
removePackagesSection();
return;
}
@@ -283,4 +333,8 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener
}
}
}
+
+ private String getDescriptionForDrainType() {
+ return getResources().getString(sDrainTypeDesciptions[mDrainType.ordinal()]);
+ }
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index b8919eefe..d36dce775 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -85,14 +85,19 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
private PowerProfile mPowerProfile;
- private HashMap<String,String> mNameCache = new HashMap<String,String>();
- private HashMap<String,Drawable> mIconCache = new HashMap<String,Drawable>();
+ private HashMap<String,UidToDetail> mUidCache = new HashMap<String,UidToDetail>();
/** Queue for fetching name and icon for an application */
private ArrayList<BatterySipper> mRequestQueue = new ArrayList<BatterySipper>();
private Thread mRequestThread;
private boolean mAbort;
+ static class UidToDetail {
+ String name;
+ String packageName;
+ Drawable icon;
+ }
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -126,7 +131,12 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
BatterySipper sipper = pgp.getInfo();
Intent intent = new Intent(this, PowerUsageDetail.class);
intent.putExtra(PowerUsageDetail.EXTRA_TITLE, sipper.name);
- intent.putExtra(PowerUsageDetail.EXTRA_PERCENT, sipper.getSortValue() * 100 / mTotalPower);
+ intent.putExtra(PowerUsageDetail.EXTRA_PERCENT, (int)
+ Math.ceil(sipper.getSortValue() * 100 / mTotalPower));
+ intent.putExtra(PowerUsageDetail.EXTRA_GAUGE, (int)
+ Math.ceil(sipper.getSortValue() * 100 / mMaxPower));
+ intent.putExtra(PowerUsageDetail.EXTRA_ICON_PACKAGE, sipper.defaultPackageName);
+ intent.putExtra(PowerUsageDetail.EXTRA_ICON_ID, sipper.iconId);
if (sipper.uidObj != null) {
intent.putExtra(PowerUsageDetail.EXTRA_UID, sipper.uidObj.getUid());
}
@@ -266,7 +276,7 @@ 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);
+ setTitle(label);
}
private void processAppUsage() {
@@ -475,8 +485,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
addWiFiUsage(uSecNow);
addBluetoothUsage(uSecNow);
addIdleUsage(uSecNow); // Not including cellular idle power
- //addRadioUsage(uSecNow); // Cannot include this because airplane mode is not tracked yet
- // and we don't know if the radio is currently running on 2/3G.
+ addRadioUsage(uSecNow);
}
private void addEntry(String label, DrainType drainType, long time, int iconId, double power) {
@@ -484,6 +493,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
mTotalPower += power;
BatterySipper bs = new BatterySipper(label, drainType, iconId, null, new double[] {power});
bs.usageTime = time;
+ bs.iconId = iconId;
mUsageList.add(bs);
}
@@ -503,6 +513,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
class BatterySipper implements Comparable<BatterySipper> {
String name;
Drawable icon;
+ int iconId; // For passing to the detail screen.
Uid uidObj;
double value;
double[] values;
@@ -512,6 +523,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
long gpsTime;
long cpuFgTime;
double percent;
+ String defaultPackageName;
BatterySipper(String label, DrainType drainType, int iconId, Uid uid, double[] values) {
this.values = values;
@@ -548,20 +560,28 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
void getQuickNameIconForUid(Uid uidObj) {
final int uid = uidObj.getUid();
final String uidString = Integer.toString(uid);
- if (mNameCache.containsKey(uidString)) {
- name = mNameCache.get(uidString);
- icon = mIconCache.get(uidString);
+ if (mUidCache.containsKey(uidString)) {
+ UidToDetail utd = mUidCache.get(uidString);
+ defaultPackageName = utd.packageName;
+ name = utd.name;
+ icon = utd.icon;
return;
}
PackageManager pm = getPackageManager();
final Drawable defaultActivityIcon = pm.getDefaultActivityIcon();
String[] packages = pm.getPackagesForUid(uid);
+ icon = pm.getDefaultActivityIcon();
if (packages == null) {
- name = Integer.toString(uid);
+ //name = Integer.toString(uid);
+ if (uid == 0) {
+ name = getResources().getString(R.string.process_kernel_label);
+ } else if (name.equals("mediaserver")) {
+ name = getResources().getString(R.string.process_mediaserver_label);
+ }
+ return;
} else {
//name = packages[0];
}
- icon = pm.getDefaultActivityIcon();
synchronized (mRequestQueue) {
mRequestQueue.add(this);
}
@@ -596,6 +616,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
packageLabels[i] = label.toString();
}
if (ai.icon != 0) {
+ defaultPackageName = packages[i];
icon = ai.loadIcon(pm);
break;
}
@@ -617,6 +638,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
if (nm != null) {
name = nm.toString();
if (pi.applicationInfo.icon != 0) {
+ defaultPackageName = pkgName;
icon = pi.applicationInfo.loadIcon(pm);
}
break;
@@ -627,8 +649,11 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
}
}
final String uidString = Integer.toString(uidObj.getUid());
- mNameCache.put(uidString, name);
- mIconCache.put(uidString, icon);
+ UidToDetail utd = new UidToDetail();
+ utd.name = name;
+ utd.icon = icon;
+ utd.packageName = defaultPackageName;
+ mUidCache.put(uidString, utd);
mHandler.sendMessage(mHandler.obtainMessage(MSG_UPDATE_NAME_ICON, this));
}
}