Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f25eb95b authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "resolved conflicts for merge of 78e9f4cb to master"

parents 271290dc ccc71413
Loading
Loading
Loading
Loading
+68 −8
Original line number Original line Diff line number Diff line
@@ -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() {
@@ -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 {
@@ -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) {
@@ -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();
@@ -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);
@@ -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);
@@ -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
     *
     *
@@ -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");
@@ -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.");
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;
+33 −2
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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";
@@ -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;
            }
            }
            
            
@@ -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) {
@@ -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);
        }
        }
+96 −51
Original line number Original line Diff line number Diff line
@@ -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];


@@ -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.
@@ -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);
            }
            }
        }
        }
@@ -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);
            }
            }
        }
        }
@@ -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;
@@ -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) {
@@ -3984,6 +4018,9 @@ public final class BatteryStatsImpl extends BatteryStats {
            mKernelWakelockStats.clear();
            mKernelWakelockStats.clear();
        }
        }
        
        
        mLowDischargeAmountSinceCharge = 0;
        mHighDischargeAmountSinceCharge = 0;

        clearHistoryLocked();
        clearHistoryLocked();
    }
    }


@@ -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;
@@ -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;
            }
            }
@@ -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;
        }
        }
    }
    }


@@ -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++) {
+0 −1
Original line number Original line Diff line number Diff line
@@ -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