Loading api/5.xml +1160 −18 File changed.Preview size limit exceeded, changes collapsed. Show changes core/java/android/os/BatteryStats.java +19 −1 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,7 @@ public abstract class BatteryStats implements Parcelable { private static final String MISC_DATA = "m"; private static final String MISC_DATA = "m"; private static final String SCREEN_BRIGHTNESS_DATA = "br"; private static final String SCREEN_BRIGHTNESS_DATA = "br"; private static final String SIGNAL_STRENGTH_TIME_DATA = "sgt"; private static final String SIGNAL_STRENGTH_TIME_DATA = "sgt"; private static final String SIGNAL_SCANNING_TIME_DATA = "sst"; private static final String SIGNAL_STRENGTH_COUNT_DATA = "sgc"; private static final String SIGNAL_STRENGTH_COUNT_DATA = "sgc"; private static final String DATA_CONNECTION_TIME_DATA = "dct"; private static final String DATA_CONNECTION_TIME_DATA = "dct"; private static final String DATA_CONNECTION_COUNT_DATA = "dcc"; private static final String DATA_CONNECTION_COUNT_DATA = "dcc"; Loading Loading @@ -439,6 +440,15 @@ public abstract class BatteryStats implements Parcelable { public abstract long getPhoneSignalStrengthTime(int strengthBin, public abstract long getPhoneSignalStrengthTime(int strengthBin, long batteryRealtime, int which); long batteryRealtime, int which); /** * Returns the time in microseconds that the phone has been trying to * acquire a signal. * * {@hide} */ public abstract long getPhoneSignalScanningTime( long batteryRealtime, int which); /** /** * Returns the number of times the phone has entered the given signal strength. * Returns the number of times the phone has entered the given signal strength. * * Loading Loading @@ -823,6 +833,8 @@ public abstract class BatteryStats implements Parcelable { args[i] = getPhoneSignalStrengthTime(i, batteryRealtime, which) / 1000; args[i] = getPhoneSignalStrengthTime(i, batteryRealtime, which) / 1000; } } dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_TIME_DATA, args); dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_TIME_DATA, args); dumpLine(pw, 0 /* uid */, category, SIGNAL_SCANNING_TIME_DATA, getPhoneSignalScanningTime(batteryRealtime, which) / 1000); for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { args[i] = getPhoneSignalStrengthCount(i, which); args[i] = getPhoneSignalStrengthCount(i, which); } } Loading Loading @@ -1131,6 +1143,12 @@ public abstract class BatteryStats implements Parcelable { if (!didOne) sb.append("No activity"); if (!didOne) sb.append("No activity"); pw.println(sb.toString()); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Signal scanning time: "); formatTimeMs(sb, getPhoneSignalScanningTime(batteryRealtime, which) / 1000); pw.println(sb.toString()); sb.setLength(0); sb.setLength(0); sb.append(prefix); sb.append(prefix); sb.append(" Radio types: "); sb.append(" Radio types: "); Loading core/java/com/android/internal/app/IBatteryStats.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ interface IBatteryStats { void notePhoneOff(); void notePhoneOff(); void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneDataConnectionState(int dataType, boolean hasData); void notePhoneDataConnectionState(int dataType, boolean hasData); void noteAirplaneMode(boolean isAirplaneMode); void notePhoneState(int phoneState); void noteWifiOn(int uid); void noteWifiOn(int uid); void noteWifiOff(int uid); void noteWifiOff(int uid); void noteWifiRunning(); void noteWifiRunning(); Loading core/java/com/android/internal/os/BatteryStatsImpl.java +79 −21 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.ParcelFormatException; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.os.Process; import android.os.SystemClock; import android.os.SystemClock; import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.util.Log; import android.util.Log; Loading Loading @@ -56,7 +57,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version // Current on-disk Parcel version private static final int VERSION = 40; private static final int VERSION = 41; private static int sNumSpeedSteps; private static int sNumSpeedSteps; Loading Loading @@ -118,6 +119,8 @@ public final class BatteryStatsImpl extends BatteryStats { final StopwatchTimer[] mPhoneSignalStrengthsTimer = final StopwatchTimer[] mPhoneSignalStrengthsTimer = new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; StopwatchTimer mPhoneSignalScanningTimer; int mPhoneDataConnectionType = -1; int mPhoneDataConnectionType = -1; final StopwatchTimer[] mPhoneDataConnectionsTimer = final StopwatchTimer[] mPhoneDataConnectionsTimer = new StopwatchTimer[NUM_DATA_CONNECTION_TYPES]; new StopwatchTimer[NUM_DATA_CONNECTION_TYPES]; Loading Loading @@ -169,6 +172,8 @@ public final class BatteryStatsImpl extends BatteryStats { private int mBluetoothPingCount; private int mBluetoothPingCount; private int mBluetoothPingStart = -1; private int mBluetoothPingStart = -1; private int mPhoneServiceState = -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 @@ -681,6 +686,8 @@ public final class BatteryStatsImpl extends BatteryStats { */ */ long mAcquireTime; long mAcquireTime; long mTimeout; StopwatchTimer(int type, ArrayList<StopwatchTimer> timerPool, StopwatchTimer(int type, ArrayList<StopwatchTimer> timerPool, ArrayList<Unpluggable> unpluggables, Parcel in) { ArrayList<Unpluggable> unpluggables, Parcel in) { super(type, unpluggables, in); super(type, unpluggables, in); Loading @@ -694,6 +701,10 @@ public final class BatteryStatsImpl extends BatteryStats { mTimerPool = timerPool; mTimerPool = timerPool; } } void setTimeout(long timeout) { mTimeout = timeout; } public void writeToParcel(Parcel out, long batteryRealtime) { public void writeToParcel(Parcel out, long batteryRealtime) { super.writeToParcel(out, batteryRealtime); super.writeToParcel(out, batteryRealtime); out.writeLong(mUpdateTime); out.writeLong(mUpdateTime); Loading Loading @@ -797,6 +808,9 @@ public final class BatteryStatsImpl extends BatteryStats { @Override @Override protected long computeRunTimeLocked(long curBatteryRealtime) { protected long computeRunTimeLocked(long curBatteryRealtime) { if (mTimeout > 0 && curBatteryRealtime > mUpdateTime + mTimeout) { curBatteryRealtime = mUpdateTime + mTimeout; } return mTotalTime + (mNesting > 0 return mTotalTime + (mNesting > 0 ? (curBatteryRealtime - mUpdateTime) ? (curBatteryRealtime - mUpdateTime) / (mTimerPool != null ? mTimerPool.size() : 1) / (mTimerPool != null ? mTimerPool.size() : 1) Loading Loading @@ -1123,34 +1137,59 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } public void noteAirplaneModeLocked(boolean isAirplaneMode) { /** final int bin = mPhoneSignalStrengthBin; * Telephony stack updates the phone state. if (bin >= 0) { * @param state phone state from ServiceState.getState() if (!isAirplaneMode) { */ if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { public void notePhoneStateLocked(int state) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); int bin = mPhoneSignalStrengthBin; } boolean isAirplaneMode = state == ServiceState.STATE_POWER_OFF; } else { // Stop all timers if (isAirplaneMode || state == ServiceState.STATE_OUT_OF_SERVICE) { for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) { while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) { while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) { mPhoneSignalStrengthsTimer[i].stopRunningLocked(this); mPhoneSignalStrengthsTimer[i].stopRunningLocked(this); } } } } } } // Stop Signal Scanning timer, in case we're going into service while (mPhoneSignalScanningTimer.isRunningLocked()) { mPhoneSignalScanningTimer.stopRunningLocked(this); } // If we're back in service or continuing in service, restart the old timer. if (state == ServiceState.STATE_IN_SERVICE) { if (bin == -1) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { mPhoneSignalStrengthBin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (!mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].isRunningLocked()) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].startRunningLocked(this); } if (!mPhoneSignalScanningTimer.isRunningLocked()) { mPhoneSignalScanningTimer.startRunningLocked(this); } } } mPhoneServiceState = state; } } 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_NONE_OR_UNKNOWN; if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; else if (dBm >= -85) bin = SIGNAL_STRENGTH_GREAT; else if (dBm >= -85) bin = SIGNAL_STRENGTH_GOOD; else if (dBm >= -95) bin = SIGNAL_STRENGTH_GOOD; else if (dBm >= -95) bin = SIGNAL_STRENGTH_MODERATE; else if (dBm >= -100) bin = SIGNAL_STRENGTH_MODERATE; else if (dBm >= -100) bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; } else { } else { int asu = signalStrength.getGsmSignalStrength(); int asu = signalStrength.getGsmSignalStrength(); if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; Loading Loading @@ -1329,6 +1368,12 @@ public final class BatteryStatsImpl extends BatteryStats { batteryRealtime, which); batteryRealtime, which); } } @Override public long getPhoneSignalScanningTime( long batteryRealtime, int which) { return mPhoneSignalScanningTimer.getTotalTimeLocked( batteryRealtime, which); } @Override public int getPhoneSignalStrengthCount(int dataType, int which) { @Override public int getPhoneSignalStrengthCount(int dataType, int which) { return mPhoneDataConnectionsTimer[dataType].getCountLocked(which); return mPhoneDataConnectionsTimer[dataType].getCountLocked(which); } } Loading Loading @@ -2653,6 +2698,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables); mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables); } } mPhoneSignalScanningTimer = new StopwatchTimer(-200+1, null, mUnpluggables); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables); mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables); } } Loading @@ -2679,6 +2725,12 @@ public final class BatteryStatsImpl extends BatteryStats { if (sNumSpeedSteps == 0) sNumSpeedSteps = steps; if (sNumSpeedSteps == 0) sNumSpeedSteps = steps; } } public void setRadioScanningTimeout(long timeout) { if (mPhoneSignalScanningTimer != null) { mPhoneSignalScanningTimer.setTimeout(timeout); } } @Override @Override public int getStartCount() { public int getStartCount() { return mStartCount; return mStartCount; Loading Loading @@ -3114,6 +3166,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].readSummaryFromParcelLocked(in); mPhoneSignalStrengthsTimer[i].readSummaryFromParcelLocked(in); } } mPhoneSignalScanningTimer.readSummaryFromParcelLocked(in); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].readSummaryFromParcelLocked(in); mPhoneDataConnectionsTimer[i].readSummaryFromParcelLocked(in); } } Loading Loading @@ -3257,6 +3310,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); mPhoneSignalStrengthsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); } } mPhoneSignalScanningTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); mPhoneDataConnectionsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); } } Loading Loading @@ -3418,6 +3472,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables, in); mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables, in); } } mPhoneSignalScanningTimer = new StopwatchTimer(-200+1, null, mUnpluggables, in); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables, in); mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables, in); } } Loading Loading @@ -3513,6 +3568,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].writeToParcel(out, batteryRealtime); mPhoneSignalStrengthsTimer[i].writeToParcel(out, batteryRealtime); } } mPhoneSignalScanningTimer.writeToParcel(out, batteryRealtime); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].writeToParcel(out, batteryRealtime); mPhoneDataConnectionsTimer[i].writeToParcel(out, batteryRealtime); } } Loading Loading @@ -3598,6 +3654,8 @@ public final class BatteryStatsImpl extends BatteryStats { pr.println("*** Signal strength #" + i + ":"); pr.println("*** Signal strength #" + i + ":"); mPhoneSignalStrengthsTimer[i].logState(pr, " "); mPhoneSignalStrengthsTimer[i].logState(pr, " "); } } pr.println("*** Signal scanning :"); mPhoneSignalScanningTimer.logState(pr, " "); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { pr.println("*** Data connection type #" + i + ":"); pr.println("*** Data connection type #" + i + ":"); mPhoneDataConnectionsTimer[i].logState(pr, " "); mPhoneDataConnectionsTimer[i].logState(pr, " "); Loading core/java/com/android/internal/os/PowerProfile.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -96,6 +96,11 @@ public class PowerProfile { */ */ public static final String POWER_RADIO_ON = "radio.on"; public static final String POWER_RADIO_ON = "radio.on"; /** * Power consumption when cell radio is hunting for a signal. */ public static final String POWER_RADIO_SCANNING = "radio.scanning"; /** /** * Power consumption when talking on the phone. * Power consumption when talking on the phone. */ */ Loading Loading
core/java/android/os/BatteryStats.java +19 −1 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,7 @@ public abstract class BatteryStats implements Parcelable { private static final String MISC_DATA = "m"; private static final String MISC_DATA = "m"; private static final String SCREEN_BRIGHTNESS_DATA = "br"; private static final String SCREEN_BRIGHTNESS_DATA = "br"; private static final String SIGNAL_STRENGTH_TIME_DATA = "sgt"; private static final String SIGNAL_STRENGTH_TIME_DATA = "sgt"; private static final String SIGNAL_SCANNING_TIME_DATA = "sst"; private static final String SIGNAL_STRENGTH_COUNT_DATA = "sgc"; private static final String SIGNAL_STRENGTH_COUNT_DATA = "sgc"; private static final String DATA_CONNECTION_TIME_DATA = "dct"; private static final String DATA_CONNECTION_TIME_DATA = "dct"; private static final String DATA_CONNECTION_COUNT_DATA = "dcc"; private static final String DATA_CONNECTION_COUNT_DATA = "dcc"; Loading Loading @@ -439,6 +440,15 @@ public abstract class BatteryStats implements Parcelable { public abstract long getPhoneSignalStrengthTime(int strengthBin, public abstract long getPhoneSignalStrengthTime(int strengthBin, long batteryRealtime, int which); long batteryRealtime, int which); /** * Returns the time in microseconds that the phone has been trying to * acquire a signal. * * {@hide} */ public abstract long getPhoneSignalScanningTime( long batteryRealtime, int which); /** /** * Returns the number of times the phone has entered the given signal strength. * Returns the number of times the phone has entered the given signal strength. * * Loading Loading @@ -823,6 +833,8 @@ public abstract class BatteryStats implements Parcelable { args[i] = getPhoneSignalStrengthTime(i, batteryRealtime, which) / 1000; args[i] = getPhoneSignalStrengthTime(i, batteryRealtime, which) / 1000; } } dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_TIME_DATA, args); dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_TIME_DATA, args); dumpLine(pw, 0 /* uid */, category, SIGNAL_SCANNING_TIME_DATA, getPhoneSignalScanningTime(batteryRealtime, which) / 1000); for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { args[i] = getPhoneSignalStrengthCount(i, which); args[i] = getPhoneSignalStrengthCount(i, which); } } Loading Loading @@ -1131,6 +1143,12 @@ public abstract class BatteryStats implements Parcelable { if (!didOne) sb.append("No activity"); if (!didOne) sb.append("No activity"); pw.println(sb.toString()); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Signal scanning time: "); formatTimeMs(sb, getPhoneSignalScanningTime(batteryRealtime, which) / 1000); pw.println(sb.toString()); sb.setLength(0); sb.setLength(0); sb.append(prefix); sb.append(prefix); sb.append(" Radio types: "); sb.append(" Radio types: "); Loading
core/java/com/android/internal/app/IBatteryStats.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ interface IBatteryStats { void notePhoneOff(); void notePhoneOff(); void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneDataConnectionState(int dataType, boolean hasData); void notePhoneDataConnectionState(int dataType, boolean hasData); void noteAirplaneMode(boolean isAirplaneMode); void notePhoneState(int phoneState); void noteWifiOn(int uid); void noteWifiOn(int uid); void noteWifiOff(int uid); void noteWifiOff(int uid); void noteWifiRunning(); void noteWifiRunning(); Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +79 −21 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.ParcelFormatException; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.os.Process; import android.os.SystemClock; import android.os.SystemClock; import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.util.Log; import android.util.Log; Loading Loading @@ -56,7 +57,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version // Current on-disk Parcel version private static final int VERSION = 40; private static final int VERSION = 41; private static int sNumSpeedSteps; private static int sNumSpeedSteps; Loading Loading @@ -118,6 +119,8 @@ public final class BatteryStatsImpl extends BatteryStats { final StopwatchTimer[] mPhoneSignalStrengthsTimer = final StopwatchTimer[] mPhoneSignalStrengthsTimer = new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; StopwatchTimer mPhoneSignalScanningTimer; int mPhoneDataConnectionType = -1; int mPhoneDataConnectionType = -1; final StopwatchTimer[] mPhoneDataConnectionsTimer = final StopwatchTimer[] mPhoneDataConnectionsTimer = new StopwatchTimer[NUM_DATA_CONNECTION_TYPES]; new StopwatchTimer[NUM_DATA_CONNECTION_TYPES]; Loading Loading @@ -169,6 +172,8 @@ public final class BatteryStatsImpl extends BatteryStats { private int mBluetoothPingCount; private int mBluetoothPingCount; private int mBluetoothPingStart = -1; private int mBluetoothPingStart = -1; private int mPhoneServiceState = -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 @@ -681,6 +686,8 @@ public final class BatteryStatsImpl extends BatteryStats { */ */ long mAcquireTime; long mAcquireTime; long mTimeout; StopwatchTimer(int type, ArrayList<StopwatchTimer> timerPool, StopwatchTimer(int type, ArrayList<StopwatchTimer> timerPool, ArrayList<Unpluggable> unpluggables, Parcel in) { ArrayList<Unpluggable> unpluggables, Parcel in) { super(type, unpluggables, in); super(type, unpluggables, in); Loading @@ -694,6 +701,10 @@ public final class BatteryStatsImpl extends BatteryStats { mTimerPool = timerPool; mTimerPool = timerPool; } } void setTimeout(long timeout) { mTimeout = timeout; } public void writeToParcel(Parcel out, long batteryRealtime) { public void writeToParcel(Parcel out, long batteryRealtime) { super.writeToParcel(out, batteryRealtime); super.writeToParcel(out, batteryRealtime); out.writeLong(mUpdateTime); out.writeLong(mUpdateTime); Loading Loading @@ -797,6 +808,9 @@ public final class BatteryStatsImpl extends BatteryStats { @Override @Override protected long computeRunTimeLocked(long curBatteryRealtime) { protected long computeRunTimeLocked(long curBatteryRealtime) { if (mTimeout > 0 && curBatteryRealtime > mUpdateTime + mTimeout) { curBatteryRealtime = mUpdateTime + mTimeout; } return mTotalTime + (mNesting > 0 return mTotalTime + (mNesting > 0 ? (curBatteryRealtime - mUpdateTime) ? (curBatteryRealtime - mUpdateTime) / (mTimerPool != null ? mTimerPool.size() : 1) / (mTimerPool != null ? mTimerPool.size() : 1) Loading Loading @@ -1123,34 +1137,59 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } public void noteAirplaneModeLocked(boolean isAirplaneMode) { /** final int bin = mPhoneSignalStrengthBin; * Telephony stack updates the phone state. if (bin >= 0) { * @param state phone state from ServiceState.getState() if (!isAirplaneMode) { */ if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { public void notePhoneStateLocked(int state) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); int bin = mPhoneSignalStrengthBin; } boolean isAirplaneMode = state == ServiceState.STATE_POWER_OFF; } else { // Stop all timers if (isAirplaneMode || state == ServiceState.STATE_OUT_OF_SERVICE) { for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) { while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) { while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) { mPhoneSignalStrengthsTimer[i].stopRunningLocked(this); mPhoneSignalStrengthsTimer[i].stopRunningLocked(this); } } } } } } // Stop Signal Scanning timer, in case we're going into service while (mPhoneSignalScanningTimer.isRunningLocked()) { mPhoneSignalScanningTimer.stopRunningLocked(this); } // If we're back in service or continuing in service, restart the old timer. if (state == ServiceState.STATE_IN_SERVICE) { if (bin == -1) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); } } else if (state == ServiceState.STATE_OUT_OF_SERVICE) { mPhoneSignalStrengthBin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (!mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].isRunningLocked()) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].startRunningLocked(this); } if (!mPhoneSignalScanningTimer.isRunningLocked()) { mPhoneSignalScanningTimer.startRunningLocked(this); } } } mPhoneServiceState = state; } } 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_NONE_OR_UNKNOWN; if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; else if (dBm >= -85) bin = SIGNAL_STRENGTH_GREAT; else if (dBm >= -85) bin = SIGNAL_STRENGTH_GOOD; else if (dBm >= -95) bin = SIGNAL_STRENGTH_GOOD; else if (dBm >= -95) bin = SIGNAL_STRENGTH_MODERATE; else if (dBm >= -100) bin = SIGNAL_STRENGTH_MODERATE; else if (dBm >= -100) bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_POOR; else bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; } else { } else { int asu = signalStrength.getGsmSignalStrength(); int asu = signalStrength.getGsmSignalStrength(); if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; Loading Loading @@ -1329,6 +1368,12 @@ public final class BatteryStatsImpl extends BatteryStats { batteryRealtime, which); batteryRealtime, which); } } @Override public long getPhoneSignalScanningTime( long batteryRealtime, int which) { return mPhoneSignalScanningTimer.getTotalTimeLocked( batteryRealtime, which); } @Override public int getPhoneSignalStrengthCount(int dataType, int which) { @Override public int getPhoneSignalStrengthCount(int dataType, int which) { return mPhoneDataConnectionsTimer[dataType].getCountLocked(which); return mPhoneDataConnectionsTimer[dataType].getCountLocked(which); } } Loading Loading @@ -2653,6 +2698,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables); mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables); } } mPhoneSignalScanningTimer = new StopwatchTimer(-200+1, null, mUnpluggables); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables); mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables); } } Loading @@ -2679,6 +2725,12 @@ public final class BatteryStatsImpl extends BatteryStats { if (sNumSpeedSteps == 0) sNumSpeedSteps = steps; if (sNumSpeedSteps == 0) sNumSpeedSteps = steps; } } public void setRadioScanningTimeout(long timeout) { if (mPhoneSignalScanningTimer != null) { mPhoneSignalScanningTimer.setTimeout(timeout); } } @Override @Override public int getStartCount() { public int getStartCount() { return mStartCount; return mStartCount; Loading Loading @@ -3114,6 +3166,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].readSummaryFromParcelLocked(in); mPhoneSignalStrengthsTimer[i].readSummaryFromParcelLocked(in); } } mPhoneSignalScanningTimer.readSummaryFromParcelLocked(in); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].readSummaryFromParcelLocked(in); mPhoneDataConnectionsTimer[i].readSummaryFromParcelLocked(in); } } Loading Loading @@ -3257,6 +3310,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); mPhoneSignalStrengthsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); } } mPhoneSignalScanningTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); mPhoneDataConnectionsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL); } } Loading Loading @@ -3418,6 +3472,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables, in); mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(-200-i, null, mUnpluggables, in); } } mPhoneSignalScanningTimer = new StopwatchTimer(-200+1, null, mUnpluggables, in); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables, in); mPhoneDataConnectionsTimer[i] = new StopwatchTimer(-300-i, null, mUnpluggables, in); } } Loading Loading @@ -3513,6 +3568,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { mPhoneSignalStrengthsTimer[i].writeToParcel(out, batteryRealtime); mPhoneSignalStrengthsTimer[i].writeToParcel(out, batteryRealtime); } } mPhoneSignalScanningTimer.writeToParcel(out, batteryRealtime); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { mPhoneDataConnectionsTimer[i].writeToParcel(out, batteryRealtime); mPhoneDataConnectionsTimer[i].writeToParcel(out, batteryRealtime); } } Loading Loading @@ -3598,6 +3654,8 @@ public final class BatteryStatsImpl extends BatteryStats { pr.println("*** Signal strength #" + i + ":"); pr.println("*** Signal strength #" + i + ":"); mPhoneSignalStrengthsTimer[i].logState(pr, " "); mPhoneSignalStrengthsTimer[i].logState(pr, " "); } } pr.println("*** Signal scanning :"); mPhoneSignalScanningTimer.logState(pr, " "); for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { pr.println("*** Data connection type #" + i + ":"); pr.println("*** Data connection type #" + i + ":"); mPhoneDataConnectionsTimer[i].logState(pr, " "); mPhoneDataConnectionsTimer[i].logState(pr, " "); Loading
core/java/com/android/internal/os/PowerProfile.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -96,6 +96,11 @@ public class PowerProfile { */ */ public static final String POWER_RADIO_ON = "radio.on"; public static final String POWER_RADIO_ON = "radio.on"; /** * Power consumption when cell radio is hunting for a signal. */ public static final String POWER_RADIO_SCANNING = "radio.scanning"; /** /** * Power consumption when talking on the phone. * Power consumption when talking on the phone. */ */ Loading