Loading cmds/pm/src/com/android/commands/pm/Pm.java +68 −8 Original line number Original line Diff line number Diff line Loading @@ -152,6 +152,7 @@ public final class Pm { * pm list permission-groups * pm list permission-groups * pm list permissions * pm list permissions * pm list features * pm list features * pm list libraries * pm list instrumentation * pm list instrumentation */ */ private void runList() { private void runList() { Loading @@ -169,6 +170,8 @@ public final class Pm { runListPermissions(); runListPermissions(); } else if ("features".equals(type)) { } else if ("features".equals(type)) { runListFeatures(); runListFeatures(); } else if ("libraries".equals(type)) { runListLibraries(); } else if ("instrumentation".equals(type)) { } else if ("instrumentation".equals(type)) { runListInstrumentation(); runListInstrumentation(); } else { } else { Loading @@ -181,6 +184,8 @@ public final class Pm { * Lists all the installed packages. * Lists all the installed packages. */ */ private void runListPackages(boolean showApplicationPackage) { private void runListPackages(boolean showApplicationPackage) { int getFlags = 0; boolean listDisabled = false, listEnabled = false; try { try { String opt; String opt; while ((opt=nextOption()) != null) { while ((opt=nextOption()) != null) { Loading @@ -190,6 +195,12 @@ public final class Pm { showApplicationPackage = true; showApplicationPackage = true; } else if (opt.equals("-f")) { } else if (opt.equals("-f")) { showApplicationPackage = true; showApplicationPackage = true; } else if (opt.equals("-d")) { listDisabled = true; } else if (opt.equals("-e")) { listEnabled = true; } else if (opt.equals("-u")) { getFlags |= PackageManager.GET_UNINSTALLED_PACKAGES; } else { } else { System.err.println("Error: Unknown option: " + opt); System.err.println("Error: Unknown option: " + opt); showUsage(); showUsage(); Loading @@ -202,12 +213,19 @@ public final class Pm { return; return; } } String filter = nextArg(); try { try { List<PackageInfo> packages = mPm.getInstalledPackages(0 /* all */); List<PackageInfo> packages = mPm.getInstalledPackages(getFlags); int count = packages.size(); int count = packages.size(); for (int p = 0 ; p < count ; p++) { for (int p = 0 ; p < count ; p++) { PackageInfo info = packages.get(p); PackageInfo info = packages.get(p); if (filter != null && !info.packageName.contains(filter)) { continue; } if ((!listDisabled || !info.applicationInfo.enabled) && (!listEnabled || info.applicationInfo.enabled)) { System.out.print("package:"); System.out.print("package:"); if (showApplicationPackage) { if (showApplicationPackage) { System.out.print(info.applicationInfo.sourceDir); System.out.print(info.applicationInfo.sourceDir); Loading @@ -215,6 +233,7 @@ public final class Pm { } } System.out.println(info.packageName); System.out.println(info.packageName); } } } } catch (RemoteException e) { } catch (RemoteException e) { System.err.println(e.toString()); System.err.println(e.toString()); System.err.println(PM_NOT_RUNNING_ERR); System.err.println(PM_NOT_RUNNING_ERR); Loading Loading @@ -259,6 +278,42 @@ public final class Pm { } } } } /** * Lists all of the libraries supported by the current device. * * pm list libraries */ private void runListLibraries() { try { List<String> list = new ArrayList<String>(); String[] rawList = mPm.getSystemSharedLibraryNames(); for (int i=0; i<rawList.length; i++) { list.add(rawList[i]); } // Sort by name Collections.sort(list, new Comparator<String>() { public int compare(String o1, String o2) { if (o1 == o2) return 0; if (o1 == null) return -1; if (o2 == null) return 1; return o1.compareTo(o2); } }); int count = (list != null) ? list.size() : 0; for (int p = 0; p < count; p++) { String lib = list.get(p); System.out.print("library:"); System.out.println(lib); } } catch (RemoteException e) { System.err.println(e.toString()); System.err.println(PM_NOT_RUNNING_ERR); } } /** /** * Lists all of the installed instrumentation, or all for a given package * Lists all of the installed instrumentation, or all for a given package * * Loading Loading @@ -882,11 +937,12 @@ public final class Pm { private static void showUsage() { private static void showUsage() { System.err.println("usage: pm [list|path|install|uninstall]"); System.err.println("usage: pm [list|path|install|uninstall]"); System.err.println(" pm list packages [-f]"); System.err.println(" pm list packages [-f] [-d] [-e] [-u] [FILTER]"); System.err.println(" pm list permission-groups"); System.err.println(" pm list permission-groups"); System.err.println(" pm list permissions [-g] [-f] [-d] [-u] [GROUP]"); System.err.println(" pm list permissions [-g] [-f] [-d] [-u] [GROUP]"); System.err.println(" pm list instrumentation [-f] [TARGET-PACKAGE]"); System.err.println(" pm list instrumentation [-f] [TARGET-PACKAGE]"); System.err.println(" pm list features"); System.err.println(" pm list features"); System.err.println(" pm list libraries"); System.err.println(" pm path PACKAGE"); System.err.println(" pm path PACKAGE"); System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH"); System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH"); System.err.println(" pm uninstall [-k] PACKAGE"); System.err.println(" pm uninstall [-k] PACKAGE"); Loading @@ -894,8 +950,12 @@ public final class Pm { System.err.println(" pm disable PACKAGE_OR_COMPONENT"); System.err.println(" pm disable PACKAGE_OR_COMPONENT"); System.err.println(" pm setInstallLocation [0/auto] [1/internal] [2/external]"); System.err.println(" pm setInstallLocation [0/auto] [1/internal] [2/external]"); System.err.println(""); System.err.println(""); System.err.println("The list packages command prints all packages. Options:"); System.err.println("The list packages command prints all packages, optionally only"); System.err.println("those whose package name contains the text in FILTER. Options:"); System.err.println(" -f: see their associated file."); System.err.println(" -f: see their associated file."); System.err.println(" -d: filter to include disbled packages."); System.err.println(" -e: filter to include enabled packages."); System.err.println(" -u: also include uninstalled packages."); System.err.println(""); System.err.println(""); System.err.println("The list permission-groups command prints all known"); System.err.println("The list permission-groups command prints all known"); System.err.println("permission groups."); System.err.println("permission groups."); Loading core/java/android/content/pm/PackageParser.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -191,7 +191,7 @@ public class PackageParser { pi.versionName = p.mVersionName; pi.versionName = p.mVersionName; pi.sharedUserId = p.mSharedUserId; pi.sharedUserId = p.mSharedUserId; pi.sharedUserLabel = p.mSharedUserLabel; pi.sharedUserLabel = p.mSharedUserLabel; pi.applicationInfo = p.applicationInfo; pi.applicationInfo = generateApplicationInfo(p, flags); pi.installLocation = p.installLocation; pi.installLocation = p.installLocation; pi.firstInstallTime = firstInstallTime; pi.firstInstallTime = firstInstallTime; pi.lastUpdateTime = lastUpdateTime; pi.lastUpdateTime = lastUpdateTime; Loading core/java/android/os/BatteryStats.java +33 −2 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,12 @@ package android.os; package android.os; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Formatter; import java.util.Formatter; import java.util.List; import java.util.Map; import java.util.Map; import android.content.pm.ApplicationInfo; import android.util.Log; import android.util.Log; import android.util.Printer; import android.util.Printer; import android.util.SparseArray; import android.util.SparseArray; Loading Loading @@ -120,6 +123,7 @@ public abstract class BatteryStats implements Parcelable { private static final long BYTES_PER_GB = 1073741824; //1024^3 private static final long BYTES_PER_GB = 1073741824; //1024^3 private static final String UID_DATA = "uid"; private static final String APK_DATA = "apk"; private static final String APK_DATA = "apk"; private static final String PROCESS_DATA = "pr"; private static final String PROCESS_DATA = "pr"; private static final String SENSOR_DATA = "sr"; private static final String SENSOR_DATA = "sr"; Loading Loading @@ -1463,7 +1467,7 @@ public abstract class BatteryStats implements Parcelable { for (int iu=0; iu<NU; iu++) { for (int iu=0; iu<NU; iu++) { final int uid = uidStats.keyAt(iu); final int uid = uidStats.keyAt(iu); if (reqUid >= 0 && uid != reqUid) { if (reqUid >= 0 && uid != reqUid && uid != Process.SYSTEM_UID) { continue; continue; } } Loading Loading @@ -1880,7 +1884,7 @@ public abstract class BatteryStats implements Parcelable { } } @SuppressWarnings("unused") @SuppressWarnings("unused") public void dumpCheckinLocked(PrintWriter pw, String[] args) { public void dumpCheckinLocked(PrintWriter pw, String[] args, List<ApplicationInfo> apps) { boolean isUnpluggedOnly = false; boolean isUnpluggedOnly = false; for (String arg : args) { for (String arg : args) { Loading @@ -1890,6 +1894,33 @@ public abstract class BatteryStats implements Parcelable { } } } } if (apps != null) { SparseArray<ArrayList<String>> uids = new SparseArray<ArrayList<String>>(); for (int i=0; i<apps.size(); i++) { ApplicationInfo ai = apps.get(i); ArrayList<String> pkgs = uids.get(ai.uid); if (pkgs == null) { pkgs = new ArrayList<String>(); uids.put(ai.uid, pkgs); } pkgs.add(ai.packageName); } SparseArray<? extends Uid> uidStats = getUidStats(); final int NU = uidStats.size(); String[] lineArgs = new String[2]; for (int i=0; i<NU; i++) { int uid = uidStats.keyAt(i); ArrayList<String> pkgs = uids.get(uid); if (pkgs != null) { for (int j=0; j<pkgs.size(); j++) { lineArgs[0] = Integer.toString(uid); lineArgs[1] = pkgs.get(j); dumpLine(pw, 0 /* uid */, "i" /* category */, UID_DATA, (Object[])lineArgs); } } } } if (isUnpluggedOnly) { if (isUnpluggedOnly) { dumpCheckinLocked(pw, STATS_SINCE_UNPLUGGED, -1); dumpCheckinLocked(pw, STATS_SINCE_UNPLUGGED, -1); } } Loading core/java/com/android/internal/os/BatteryStatsImpl.java +96 −51 Original line number Original line Diff line number Diff line Loading @@ -192,6 +192,7 @@ public final class BatteryStatsImpl extends BatteryStats { StopwatchTimer mVideoOnTimer; StopwatchTimer mVideoOnTimer; int mPhoneSignalStrengthBin = -1; int mPhoneSignalStrengthBin = -1; int mPhoneSignalStrengthBinRaw = -1; final StopwatchTimer[] mPhoneSignalStrengthsTimer = final StopwatchTimer[] mPhoneSignalStrengthsTimer = new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; Loading Loading @@ -252,6 +253,8 @@ public final class BatteryStatsImpl extends BatteryStats { private int mBluetoothPingStart = -1; private int mBluetoothPingStart = -1; private int mPhoneServiceState = -1; private int mPhoneServiceState = -1; private int mPhoneServiceStateRaw = -1; private int mPhoneSimStateRaw = -1; /* /* * Holds a SamplingTimer associated with each kernel wakelock name being tracked. * Holds a SamplingTimer associated with each kernel wakelock name being tracked. Loading Loading @@ -1650,40 +1653,54 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } /** private int fixPhoneServiceState(int state, int signalBin) { * Telephony stack updates the phone state. if (mPhoneSimStateRaw == TelephonyManager.SIM_STATE_ABSENT) { * @param state phone state from ServiceState.getState() // In this case we will always be STATE_OUT_OF_SERVICE, so need */ // to infer that we are scanning from other data. public void notePhoneStateLocked(int state) { if (state == ServiceState.STATE_OUT_OF_SERVICE && signalBin > SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { state = ServiceState.STATE_IN_SERVICE; } } return state; } private void updateAllPhoneStateLocked(int state, int simState, int bin) { boolean scanning = false; boolean scanning = false; boolean newHistory = false; int bin = mPhoneSignalStrengthBin; mPhoneServiceStateRaw = state; mPhoneSimStateRaw = simState; mPhoneSignalStrengthBinRaw = bin; if (simState == TelephonyManager.SIM_STATE_ABSENT) { // In this case we will always be STATE_OUT_OF_SERVICE, so need // to infer that we are scanning from other data. if (state == ServiceState.STATE_OUT_OF_SERVICE && bin > SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { state = ServiceState.STATE_IN_SERVICE; } } // If the phone is powered off, stop all timers. // If the phone is powered off, stop all timers. if (state == ServiceState.STATE_POWER_OFF) { if (state == ServiceState.STATE_POWER_OFF) { stopAllSignalStrengthTimersLocked(-1); bin = -1; // If we're back in service or continuing in service, restart the old timer. // If we are in service, make sure the correct signal string timer is running. } if (state == ServiceState.STATE_IN_SERVICE) { } else if (state == ServiceState.STATE_IN_SERVICE) { if (bin == -1) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; // Bin will be changed below. if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } // If we're out of service, we are in the lowest signal strength // If we're out of service, we are in the lowest signal strength // bin and have the scanning bit set. // bin and have the scanning bit set. } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { scanning = true; scanning = true; mPhoneSignalStrengthBin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; stopAllSignalStrengthTimersLocked(mPhoneSignalStrengthBin); if (!mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].isRunningLocked()) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].startRunningLocked(this); } if (!mPhoneSignalScanningTimer.isRunningLocked()) { if (!mPhoneSignalScanningTimer.isRunningLocked()) { mHistoryCur.states |= HistoryItem.STATE_PHONE_SCANNING_FLAG; mHistoryCur.states |= HistoryItem.STATE_PHONE_SCANNING_FLAG; newHistory = true; if (DEBUG_HISTORY) Slog.v(TAG, "Phone started scanning to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone started scanning to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); mPhoneSignalScanningTimer.startRunningLocked(this); mPhoneSignalScanningTimer.startRunningLocked(this); } } } } Loading @@ -1694,7 +1711,7 @@ public final class BatteryStatsImpl extends BatteryStats { mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG; mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG; if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); newHistory = true; mPhoneSignalScanningTimer.stopRunningLocked(this); mPhoneSignalScanningTimer.stopRunningLocked(this); } } } } Loading @@ -1702,21 +1719,48 @@ public final class BatteryStatsImpl extends BatteryStats { if (mPhoneServiceState != state) { if (mPhoneServiceState != state) { mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_PHONE_STATE_MASK) mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_PHONE_STATE_MASK) | (state << HistoryItem.STATE_PHONE_STATE_SHIFT); | (state << HistoryItem.STATE_PHONE_STATE_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Phone state " + bin + " to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone state " + state + " to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); newHistory = true; mPhoneServiceState = state; mPhoneServiceState = state; } } if (mPhoneSignalStrengthBin != bin) { if (mPhoneSignalStrengthBin >= 0) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].stopRunningLocked(this); } if (bin >= 0) { if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_SIGNAL_STRENGTH_MASK) | (bin << HistoryItem.STATE_SIGNAL_STRENGTH_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Signal strength " + bin + " to: " + Integer.toHexString(mHistoryCur.states)); newHistory = true; } else { stopAllSignalStrengthTimersLocked(-1); } mPhoneSignalStrengthBin = bin; } if (newHistory) { addHistoryRecordLocked(SystemClock.elapsedRealtime()); } } /** * Telephony stack updates the phone state. * @param state phone state from ServiceState.getState() */ public void notePhoneStateLocked(int state, int simState) { updateAllPhoneStateLocked(state, simState, mPhoneSignalStrengthBinRaw); } } public void notePhoneSignalStrengthLocked(SignalStrength signalStrength) { public void notePhoneSignalStrengthLocked(SignalStrength signalStrength) { // Bin the strength. // Bin the strength. int bin; int bin; if (mPhoneServiceState == ServiceState.STATE_POWER_OFF || mPhoneServiceState == ServiceState.STATE_OUT_OF_SERVICE) { // Ignore any signal strength changes when radio was turned off or out of service. return; } if (!signalStrength.isGsm()) { if (!signalStrength.isGsm()) { int dBm = signalStrength.getCdmaDbm(); int dBm = signalStrength.getCdmaDbm(); if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; Loading @@ -1732,18 +1776,8 @@ public final class BatteryStatsImpl extends BatteryStats { else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; else bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_POOR; } } if (mPhoneSignalStrengthBin != bin) { mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_SIGNAL_STRENGTH_MASK) updateAllPhoneStateLocked(mPhoneServiceStateRaw, mPhoneSimStateRaw, bin); | (bin << HistoryItem.STATE_SIGNAL_STRENGTH_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Signal strength " + bin + " to: " + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); if (mPhoneSignalStrengthBin >= 0) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].stopRunningLocked(this); } mPhoneSignalStrengthBin = bin; mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } } } public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) { public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) { Loading Loading @@ -3984,6 +4018,9 @@ public final class BatteryStatsImpl extends BatteryStats { mKernelWakelockStats.clear(); mKernelWakelockStats.clear(); } } mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; clearHistoryLocked(); clearHistoryLocked(); } } Loading @@ -4005,12 +4042,10 @@ public final class BatteryStatsImpl extends BatteryStats { // level to a now very high level). // level to a now very high level). if (oldStatus == BatteryManager.BATTERY_STATUS_FULL if (oldStatus == BatteryManager.BATTERY_STATUS_FULL || level >= 95 || level >= 95 || (mDischargeCurrentLevel < 30 && level >= 90)) { || (mDischargeCurrentLevel < 20 && level >= 80)) { doWrite = true; doWrite = true; resetAllStatsLocked(); resetAllStatsLocked(); mDischargeStartLevel = level; mDischargeStartLevel = level; mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; } } updateKernelWakelocksLocked(); updateKernelWakelocksLocked(); mHistoryCur.batteryLevel = (byte)level; mHistoryCur.batteryLevel = (byte)level; Loading Loading @@ -4100,11 +4135,13 @@ public final class BatteryStatsImpl extends BatteryStats { mHistoryCur.batteryPlugType = (byte)plugType; mHistoryCur.batteryPlugType = (byte)plugType; changed = true; changed = true; } } if (mHistoryCur.batteryTemperature != temp) { if (temp >= (mHistoryCur.batteryTemperature+10) || temp <= (mHistoryCur.batteryTemperature-10)) { mHistoryCur.batteryTemperature = (char)temp; mHistoryCur.batteryTemperature = (char)temp; changed = true; changed = true; } } if (mHistoryCur.batteryVoltage != volt) { if (volt > (mHistoryCur.batteryVoltage+20) || volt < (mHistoryCur.batteryVoltage-20)) { mHistoryCur.batteryVoltage = (char)volt; mHistoryCur.batteryVoltage = (char)volt; changed = true; changed = true; } } Loading Loading @@ -4306,14 +4343,22 @@ public final class BatteryStatsImpl extends BatteryStats { @Override @Override public int getLowDischargeAmountSinceCharge() { public int getLowDischargeAmountSinceCharge() { synchronized(this) { synchronized(this) { return mLowDischargeAmountSinceCharge; int val = mLowDischargeAmountSinceCharge; if (mOnBattery && mDischargeCurrentLevel < mDischargeUnplugLevel) { val += mDischargeUnplugLevel-mDischargeCurrentLevel-1; } return val; } } } } @Override @Override public int getHighDischargeAmountSinceCharge() { public int getHighDischargeAmountSinceCharge() { synchronized(this) { synchronized(this) { return mHighDischargeAmountSinceCharge; int val = mHighDischargeAmountSinceCharge; if (mOnBattery && mDischargeCurrentLevel < mDischargeUnplugLevel) { val += mDischargeUnplugLevel-mDischargeCurrentLevel; } return val; } } } } Loading Loading @@ -4815,8 +4860,8 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED)); out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED)); out.writeInt(mDischargeUnplugLevel); out.writeInt(mDischargeUnplugLevel); out.writeInt(mDischargeCurrentLevel); out.writeInt(mDischargeCurrentLevel); out.writeInt(mLowDischargeAmountSinceCharge); out.writeInt(getLowDischargeAmountSinceCharge()); out.writeInt(mHighDischargeAmountSinceCharge); out.writeInt(getHighDischargeAmountSinceCharge()); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { Loading policy/src/com/android/internal/policy/impl/RecentApplicationsDialog.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.RemoteException; import android.util.Log; import android.util.Log; import android.view.View; import android.view.View; import android.view.Window; import android.view.Window; Loading Loading
cmds/pm/src/com/android/commands/pm/Pm.java +68 −8 Original line number Original line Diff line number Diff line Loading @@ -152,6 +152,7 @@ public final class Pm { * pm list permission-groups * pm list permission-groups * pm list permissions * pm list permissions * pm list features * pm list features * pm list libraries * pm list instrumentation * pm list instrumentation */ */ private void runList() { private void runList() { Loading @@ -169,6 +170,8 @@ public final class Pm { runListPermissions(); runListPermissions(); } else if ("features".equals(type)) { } else if ("features".equals(type)) { runListFeatures(); runListFeatures(); } else if ("libraries".equals(type)) { runListLibraries(); } else if ("instrumentation".equals(type)) { } else if ("instrumentation".equals(type)) { runListInstrumentation(); runListInstrumentation(); } else { } else { Loading @@ -181,6 +184,8 @@ public final class Pm { * Lists all the installed packages. * Lists all the installed packages. */ */ private void runListPackages(boolean showApplicationPackage) { private void runListPackages(boolean showApplicationPackage) { int getFlags = 0; boolean listDisabled = false, listEnabled = false; try { try { String opt; String opt; while ((opt=nextOption()) != null) { while ((opt=nextOption()) != null) { Loading @@ -190,6 +195,12 @@ public final class Pm { showApplicationPackage = true; showApplicationPackage = true; } else if (opt.equals("-f")) { } else if (opt.equals("-f")) { showApplicationPackage = true; showApplicationPackage = true; } else if (opt.equals("-d")) { listDisabled = true; } else if (opt.equals("-e")) { listEnabled = true; } else if (opt.equals("-u")) { getFlags |= PackageManager.GET_UNINSTALLED_PACKAGES; } else { } else { System.err.println("Error: Unknown option: " + opt); System.err.println("Error: Unknown option: " + opt); showUsage(); showUsage(); Loading @@ -202,12 +213,19 @@ public final class Pm { return; return; } } String filter = nextArg(); try { try { List<PackageInfo> packages = mPm.getInstalledPackages(0 /* all */); List<PackageInfo> packages = mPm.getInstalledPackages(getFlags); int count = packages.size(); int count = packages.size(); for (int p = 0 ; p < count ; p++) { for (int p = 0 ; p < count ; p++) { PackageInfo info = packages.get(p); PackageInfo info = packages.get(p); if (filter != null && !info.packageName.contains(filter)) { continue; } if ((!listDisabled || !info.applicationInfo.enabled) && (!listEnabled || info.applicationInfo.enabled)) { System.out.print("package:"); System.out.print("package:"); if (showApplicationPackage) { if (showApplicationPackage) { System.out.print(info.applicationInfo.sourceDir); System.out.print(info.applicationInfo.sourceDir); Loading @@ -215,6 +233,7 @@ public final class Pm { } } System.out.println(info.packageName); System.out.println(info.packageName); } } } } catch (RemoteException e) { } catch (RemoteException e) { System.err.println(e.toString()); System.err.println(e.toString()); System.err.println(PM_NOT_RUNNING_ERR); System.err.println(PM_NOT_RUNNING_ERR); Loading Loading @@ -259,6 +278,42 @@ public final class Pm { } } } } /** * Lists all of the libraries supported by the current device. * * pm list libraries */ private void runListLibraries() { try { List<String> list = new ArrayList<String>(); String[] rawList = mPm.getSystemSharedLibraryNames(); for (int i=0; i<rawList.length; i++) { list.add(rawList[i]); } // Sort by name Collections.sort(list, new Comparator<String>() { public int compare(String o1, String o2) { if (o1 == o2) return 0; if (o1 == null) return -1; if (o2 == null) return 1; return o1.compareTo(o2); } }); int count = (list != null) ? list.size() : 0; for (int p = 0; p < count; p++) { String lib = list.get(p); System.out.print("library:"); System.out.println(lib); } } catch (RemoteException e) { System.err.println(e.toString()); System.err.println(PM_NOT_RUNNING_ERR); } } /** /** * Lists all of the installed instrumentation, or all for a given package * Lists all of the installed instrumentation, or all for a given package * * Loading Loading @@ -882,11 +937,12 @@ public final class Pm { private static void showUsage() { private static void showUsage() { System.err.println("usage: pm [list|path|install|uninstall]"); System.err.println("usage: pm [list|path|install|uninstall]"); System.err.println(" pm list packages [-f]"); System.err.println(" pm list packages [-f] [-d] [-e] [-u] [FILTER]"); System.err.println(" pm list permission-groups"); System.err.println(" pm list permission-groups"); System.err.println(" pm list permissions [-g] [-f] [-d] [-u] [GROUP]"); System.err.println(" pm list permissions [-g] [-f] [-d] [-u] [GROUP]"); System.err.println(" pm list instrumentation [-f] [TARGET-PACKAGE]"); System.err.println(" pm list instrumentation [-f] [TARGET-PACKAGE]"); System.err.println(" pm list features"); System.err.println(" pm list features"); System.err.println(" pm list libraries"); System.err.println(" pm path PACKAGE"); System.err.println(" pm path PACKAGE"); System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH"); System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH"); System.err.println(" pm uninstall [-k] PACKAGE"); System.err.println(" pm uninstall [-k] PACKAGE"); Loading @@ -894,8 +950,12 @@ public final class Pm { System.err.println(" pm disable PACKAGE_OR_COMPONENT"); System.err.println(" pm disable PACKAGE_OR_COMPONENT"); System.err.println(" pm setInstallLocation [0/auto] [1/internal] [2/external]"); System.err.println(" pm setInstallLocation [0/auto] [1/internal] [2/external]"); System.err.println(""); System.err.println(""); System.err.println("The list packages command prints all packages. Options:"); System.err.println("The list packages command prints all packages, optionally only"); System.err.println("those whose package name contains the text in FILTER. Options:"); System.err.println(" -f: see their associated file."); System.err.println(" -f: see their associated file."); System.err.println(" -d: filter to include disbled packages."); System.err.println(" -e: filter to include enabled packages."); System.err.println(" -u: also include uninstalled packages."); System.err.println(""); System.err.println(""); System.err.println("The list permission-groups command prints all known"); System.err.println("The list permission-groups command prints all known"); System.err.println("permission groups."); System.err.println("permission groups."); Loading
core/java/android/content/pm/PackageParser.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -191,7 +191,7 @@ public class PackageParser { pi.versionName = p.mVersionName; pi.versionName = p.mVersionName; pi.sharedUserId = p.mSharedUserId; pi.sharedUserId = p.mSharedUserId; pi.sharedUserLabel = p.mSharedUserLabel; pi.sharedUserLabel = p.mSharedUserLabel; pi.applicationInfo = p.applicationInfo; pi.applicationInfo = generateApplicationInfo(p, flags); pi.installLocation = p.installLocation; pi.installLocation = p.installLocation; pi.firstInstallTime = firstInstallTime; pi.firstInstallTime = firstInstallTime; pi.lastUpdateTime = lastUpdateTime; pi.lastUpdateTime = lastUpdateTime; Loading
core/java/android/os/BatteryStats.java +33 −2 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,12 @@ package android.os; package android.os; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Formatter; import java.util.Formatter; import java.util.List; import java.util.Map; import java.util.Map; import android.content.pm.ApplicationInfo; import android.util.Log; import android.util.Log; import android.util.Printer; import android.util.Printer; import android.util.SparseArray; import android.util.SparseArray; Loading Loading @@ -120,6 +123,7 @@ public abstract class BatteryStats implements Parcelable { private static final long BYTES_PER_GB = 1073741824; //1024^3 private static final long BYTES_PER_GB = 1073741824; //1024^3 private static final String UID_DATA = "uid"; private static final String APK_DATA = "apk"; private static final String APK_DATA = "apk"; private static final String PROCESS_DATA = "pr"; private static final String PROCESS_DATA = "pr"; private static final String SENSOR_DATA = "sr"; private static final String SENSOR_DATA = "sr"; Loading Loading @@ -1463,7 +1467,7 @@ public abstract class BatteryStats implements Parcelable { for (int iu=0; iu<NU; iu++) { for (int iu=0; iu<NU; iu++) { final int uid = uidStats.keyAt(iu); final int uid = uidStats.keyAt(iu); if (reqUid >= 0 && uid != reqUid) { if (reqUid >= 0 && uid != reqUid && uid != Process.SYSTEM_UID) { continue; continue; } } Loading Loading @@ -1880,7 +1884,7 @@ public abstract class BatteryStats implements Parcelable { } } @SuppressWarnings("unused") @SuppressWarnings("unused") public void dumpCheckinLocked(PrintWriter pw, String[] args) { public void dumpCheckinLocked(PrintWriter pw, String[] args, List<ApplicationInfo> apps) { boolean isUnpluggedOnly = false; boolean isUnpluggedOnly = false; for (String arg : args) { for (String arg : args) { Loading @@ -1890,6 +1894,33 @@ public abstract class BatteryStats implements Parcelable { } } } } if (apps != null) { SparseArray<ArrayList<String>> uids = new SparseArray<ArrayList<String>>(); for (int i=0; i<apps.size(); i++) { ApplicationInfo ai = apps.get(i); ArrayList<String> pkgs = uids.get(ai.uid); if (pkgs == null) { pkgs = new ArrayList<String>(); uids.put(ai.uid, pkgs); } pkgs.add(ai.packageName); } SparseArray<? extends Uid> uidStats = getUidStats(); final int NU = uidStats.size(); String[] lineArgs = new String[2]; for (int i=0; i<NU; i++) { int uid = uidStats.keyAt(i); ArrayList<String> pkgs = uids.get(uid); if (pkgs != null) { for (int j=0; j<pkgs.size(); j++) { lineArgs[0] = Integer.toString(uid); lineArgs[1] = pkgs.get(j); dumpLine(pw, 0 /* uid */, "i" /* category */, UID_DATA, (Object[])lineArgs); } } } } if (isUnpluggedOnly) { if (isUnpluggedOnly) { dumpCheckinLocked(pw, STATS_SINCE_UNPLUGGED, -1); dumpCheckinLocked(pw, STATS_SINCE_UNPLUGGED, -1); } } Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +96 −51 Original line number Original line Diff line number Diff line Loading @@ -192,6 +192,7 @@ public final class BatteryStatsImpl extends BatteryStats { StopwatchTimer mVideoOnTimer; StopwatchTimer mVideoOnTimer; int mPhoneSignalStrengthBin = -1; int mPhoneSignalStrengthBin = -1; int mPhoneSignalStrengthBinRaw = -1; final StopwatchTimer[] mPhoneSignalStrengthsTimer = final StopwatchTimer[] mPhoneSignalStrengthsTimer = new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; Loading Loading @@ -252,6 +253,8 @@ public final class BatteryStatsImpl extends BatteryStats { private int mBluetoothPingStart = -1; private int mBluetoothPingStart = -1; private int mPhoneServiceState = -1; private int mPhoneServiceState = -1; private int mPhoneServiceStateRaw = -1; private int mPhoneSimStateRaw = -1; /* /* * Holds a SamplingTimer associated with each kernel wakelock name being tracked. * Holds a SamplingTimer associated with each kernel wakelock name being tracked. Loading Loading @@ -1650,40 +1653,54 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } /** private int fixPhoneServiceState(int state, int signalBin) { * Telephony stack updates the phone state. if (mPhoneSimStateRaw == TelephonyManager.SIM_STATE_ABSENT) { * @param state phone state from ServiceState.getState() // In this case we will always be STATE_OUT_OF_SERVICE, so need */ // to infer that we are scanning from other data. public void notePhoneStateLocked(int state) { if (state == ServiceState.STATE_OUT_OF_SERVICE && signalBin > SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { state = ServiceState.STATE_IN_SERVICE; } } return state; } private void updateAllPhoneStateLocked(int state, int simState, int bin) { boolean scanning = false; boolean scanning = false; boolean newHistory = false; int bin = mPhoneSignalStrengthBin; mPhoneServiceStateRaw = state; mPhoneSimStateRaw = simState; mPhoneSignalStrengthBinRaw = bin; if (simState == TelephonyManager.SIM_STATE_ABSENT) { // In this case we will always be STATE_OUT_OF_SERVICE, so need // to infer that we are scanning from other data. if (state == ServiceState.STATE_OUT_OF_SERVICE && bin > SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { state = ServiceState.STATE_IN_SERVICE; } } // If the phone is powered off, stop all timers. // If the phone is powered off, stop all timers. if (state == ServiceState.STATE_POWER_OFF) { if (state == ServiceState.STATE_POWER_OFF) { stopAllSignalStrengthTimersLocked(-1); bin = -1; // If we're back in service or continuing in service, restart the old timer. // If we are in service, make sure the correct signal string timer is running. } if (state == ServiceState.STATE_IN_SERVICE) { } else if (state == ServiceState.STATE_IN_SERVICE) { if (bin == -1) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; // Bin will be changed below. if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } // If we're out of service, we are in the lowest signal strength // If we're out of service, we are in the lowest signal strength // bin and have the scanning bit set. // bin and have the scanning bit set. } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { scanning = true; scanning = true; mPhoneSignalStrengthBin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; stopAllSignalStrengthTimersLocked(mPhoneSignalStrengthBin); if (!mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].isRunningLocked()) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].startRunningLocked(this); } if (!mPhoneSignalScanningTimer.isRunningLocked()) { if (!mPhoneSignalScanningTimer.isRunningLocked()) { mHistoryCur.states |= HistoryItem.STATE_PHONE_SCANNING_FLAG; mHistoryCur.states |= HistoryItem.STATE_PHONE_SCANNING_FLAG; newHistory = true; if (DEBUG_HISTORY) Slog.v(TAG, "Phone started scanning to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone started scanning to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); mPhoneSignalScanningTimer.startRunningLocked(this); mPhoneSignalScanningTimer.startRunningLocked(this); } } } } Loading @@ -1694,7 +1711,7 @@ public final class BatteryStatsImpl extends BatteryStats { mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG; mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG; if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); newHistory = true; mPhoneSignalScanningTimer.stopRunningLocked(this); mPhoneSignalScanningTimer.stopRunningLocked(this); } } } } Loading @@ -1702,21 +1719,48 @@ public final class BatteryStatsImpl extends BatteryStats { if (mPhoneServiceState != state) { if (mPhoneServiceState != state) { mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_PHONE_STATE_MASK) mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_PHONE_STATE_MASK) | (state << HistoryItem.STATE_PHONE_STATE_SHIFT); | (state << HistoryItem.STATE_PHONE_STATE_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Phone state " + bin + " to: " if (DEBUG_HISTORY) Slog.v(TAG, "Phone state " + state + " to: " + Integer.toHexString(mHistoryCur.states)); + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); newHistory = true; mPhoneServiceState = state; mPhoneServiceState = state; } } if (mPhoneSignalStrengthBin != bin) { if (mPhoneSignalStrengthBin >= 0) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].stopRunningLocked(this); } if (bin >= 0) { if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_SIGNAL_STRENGTH_MASK) | (bin << HistoryItem.STATE_SIGNAL_STRENGTH_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Signal strength " + bin + " to: " + Integer.toHexString(mHistoryCur.states)); newHistory = true; } else { stopAllSignalStrengthTimersLocked(-1); } mPhoneSignalStrengthBin = bin; } if (newHistory) { addHistoryRecordLocked(SystemClock.elapsedRealtime()); } } /** * Telephony stack updates the phone state. * @param state phone state from ServiceState.getState() */ public void notePhoneStateLocked(int state, int simState) { updateAllPhoneStateLocked(state, simState, mPhoneSignalStrengthBinRaw); } } public void notePhoneSignalStrengthLocked(SignalStrength signalStrength) { public void notePhoneSignalStrengthLocked(SignalStrength signalStrength) { // Bin the strength. // Bin the strength. int bin; int bin; if (mPhoneServiceState == ServiceState.STATE_POWER_OFF || mPhoneServiceState == ServiceState.STATE_OUT_OF_SERVICE) { // Ignore any signal strength changes when radio was turned off or out of service. return; } if (!signalStrength.isGsm()) { if (!signalStrength.isGsm()) { int dBm = signalStrength.getCdmaDbm(); int dBm = signalStrength.getCdmaDbm(); if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; Loading @@ -1732,18 +1776,8 @@ public final class BatteryStatsImpl extends BatteryStats { else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; else bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_POOR; } } if (mPhoneSignalStrengthBin != bin) { mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_SIGNAL_STRENGTH_MASK) updateAllPhoneStateLocked(mPhoneServiceStateRaw, mPhoneSimStateRaw, bin); | (bin << HistoryItem.STATE_SIGNAL_STRENGTH_SHIFT); if (DEBUG_HISTORY) Slog.v(TAG, "Signal strength " + bin + " to: " + Integer.toHexString(mHistoryCur.states)); addHistoryRecordLocked(SystemClock.elapsedRealtime()); if (mPhoneSignalStrengthBin >= 0) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].stopRunningLocked(this); } mPhoneSignalStrengthBin = bin; mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } } } public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) { public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) { Loading Loading @@ -3984,6 +4018,9 @@ public final class BatteryStatsImpl extends BatteryStats { mKernelWakelockStats.clear(); mKernelWakelockStats.clear(); } } mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; clearHistoryLocked(); clearHistoryLocked(); } } Loading @@ -4005,12 +4042,10 @@ public final class BatteryStatsImpl extends BatteryStats { // level to a now very high level). // level to a now very high level). if (oldStatus == BatteryManager.BATTERY_STATUS_FULL if (oldStatus == BatteryManager.BATTERY_STATUS_FULL || level >= 95 || level >= 95 || (mDischargeCurrentLevel < 30 && level >= 90)) { || (mDischargeCurrentLevel < 20 && level >= 80)) { doWrite = true; doWrite = true; resetAllStatsLocked(); resetAllStatsLocked(); mDischargeStartLevel = level; mDischargeStartLevel = level; mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; } } updateKernelWakelocksLocked(); updateKernelWakelocksLocked(); mHistoryCur.batteryLevel = (byte)level; mHistoryCur.batteryLevel = (byte)level; Loading Loading @@ -4100,11 +4135,13 @@ public final class BatteryStatsImpl extends BatteryStats { mHistoryCur.batteryPlugType = (byte)plugType; mHistoryCur.batteryPlugType = (byte)plugType; changed = true; changed = true; } } if (mHistoryCur.batteryTemperature != temp) { if (temp >= (mHistoryCur.batteryTemperature+10) || temp <= (mHistoryCur.batteryTemperature-10)) { mHistoryCur.batteryTemperature = (char)temp; mHistoryCur.batteryTemperature = (char)temp; changed = true; changed = true; } } if (mHistoryCur.batteryVoltage != volt) { if (volt > (mHistoryCur.batteryVoltage+20) || volt < (mHistoryCur.batteryVoltage-20)) { mHistoryCur.batteryVoltage = (char)volt; mHistoryCur.batteryVoltage = (char)volt; changed = true; changed = true; } } Loading Loading @@ -4306,14 +4343,22 @@ public final class BatteryStatsImpl extends BatteryStats { @Override @Override public int getLowDischargeAmountSinceCharge() { public int getLowDischargeAmountSinceCharge() { synchronized(this) { synchronized(this) { return mLowDischargeAmountSinceCharge; int val = mLowDischargeAmountSinceCharge; if (mOnBattery && mDischargeCurrentLevel < mDischargeUnplugLevel) { val += mDischargeUnplugLevel-mDischargeCurrentLevel-1; } return val; } } } } @Override @Override public int getHighDischargeAmountSinceCharge() { public int getHighDischargeAmountSinceCharge() { synchronized(this) { synchronized(this) { return mHighDischargeAmountSinceCharge; int val = mHighDischargeAmountSinceCharge; if (mOnBattery && mDischargeCurrentLevel < mDischargeUnplugLevel) { val += mDischargeUnplugLevel-mDischargeCurrentLevel; } return val; } } } } Loading Loading @@ -4815,8 +4860,8 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED)); out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED)); out.writeInt(mDischargeUnplugLevel); out.writeInt(mDischargeUnplugLevel); out.writeInt(mDischargeCurrentLevel); out.writeInt(mDischargeCurrentLevel); out.writeInt(mLowDischargeAmountSinceCharge); out.writeInt(getLowDischargeAmountSinceCharge()); out.writeInt(mHighDischargeAmountSinceCharge); out.writeInt(getHighDischargeAmountSinceCharge()); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { Loading
policy/src/com/android/internal/policy/impl/RecentApplicationsDialog.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.RemoteException; import android.util.Log; import android.util.Log; import android.view.View; import android.view.View; import android.view.Window; import android.view.Window; Loading