Loading core/java/android/os/BatteryStats.java +44 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ public abstract class BatteryStats implements Parcelable { private static final String NETWORK_DATA = "nt"; private static final String USER_ACTIVITY_DATA = "ua"; private static final String BATTERY_DATA = "bt"; private static final String BATTERY_DISCHARGE_DATA = "dc"; private static final String BATTERY_LEVEL_DATA = "lv"; private static final String WIFI_LOCK_DATA = "wfl"; private static final String MISC_DATA = "m"; Loading Loading @@ -803,6 +804,30 @@ public abstract class BatteryStats implements Parcelable { */ public abstract int getHighDischargeAmountSinceCharge(); /** * Get the amount the battery has discharged while the screen was on, * since the last time power was unplugged. */ public abstract int getDischargeAmountScreenOn(); /** * Get the amount the battery has discharged while the screen was on, * since the last time the device was charged. */ public abstract int getDischargeAmountScreenOnSinceCharge(); /** * Get the amount the battery has discharged while the screen was off, * since the last time power was unplugged. */ public abstract int getDischargeAmountScreenOff(); /** * Get the amount the battery has discharged while the screen was off, * since the last time the device was charged. */ public abstract int getDischargeAmountScreenOffSinceCharge(); /** * Returns the total, last, or current battery uptime in microseconds. * Loading Loading @@ -1098,6 +1123,17 @@ public abstract class BatteryStats implements Parcelable { getDischargeCurrentLevel()); } if (which == STATS_SINCE_UNPLUGGED) { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff()); } else { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getLowDischargeAmountSinceCharge(), getHighDischargeAmountSinceCharge(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff()); } if (reqUid < 0) { Map<String, ? extends BatteryStats.Timer> kernelWakelocks = getKernelWakelockStats(); if (kernelWakelocks.size() > 0) { Loading Loading @@ -1454,6 +1490,10 @@ public abstract class BatteryStats implements Parcelable { pw.print(prefix); pw.print(" Last discharge cycle end level: "); pw.println(getDischargeCurrentLevel()); } pw.print(prefix); pw.print(" Amount discharged while screen on: "); pw.println(getDischargeAmountScreenOn()); pw.print(prefix); pw.print(" Amount discharged while screen off: "); pw.println(getDischargeAmountScreenOff()); pw.println(" "); } else { pw.print(prefix); pw.println(" Device battery use since last full charge"); Loading @@ -1461,6 +1501,10 @@ public abstract class BatteryStats implements Parcelable { pw.println(getLowDischargeAmountSinceCharge()); pw.print(prefix); pw.print(" Amount discharged (upper bound): "); pw.println(getHighDischargeAmountSinceCharge()); pw.print(prefix); pw.print(" Amount discharged while screen on: "); pw.println(getDischargeAmountScreenOnSinceCharge()); pw.print(prefix); pw.print(" Amount discharged while screen off: "); pw.println(getDischargeAmountScreenOffSinceCharge()); pw.println(" "); } Loading core/java/com/android/internal/os/BatteryStatsImpl.java +117 −5 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version private static final int VERSION = 52; private static final int VERSION = 54; // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS = 2000; Loading Loading @@ -237,6 +237,12 @@ public final class BatteryStatsImpl extends BatteryStats { int mDischargeCurrentLevel; int mLowDischargeAmountSinceCharge; int mHighDischargeAmountSinceCharge; int mDischargeScreenOnUnplugLevel; int mDischargeScreenOffUnplugLevel; int mDischargeAmountScreenOn; int mDischargeAmountScreenOnSinceCharge; int mDischargeAmountScreenOff; int mDischargeAmountScreenOffSinceCharge; long mLastWriteTime = 0; // Milliseconds Loading Loading @@ -1572,6 +1578,11 @@ public final class BatteryStatsImpl extends BatteryStats { // Fake a wake lock, so we consider the device waked as long // as the screen is on. noteStartWakeLocked(-1, -1, "dummy", WAKE_TYPE_PARTIAL); // Update discharge amounts. if (mOnBatteryInternal) { updateDischargeScreenLevels(false, true); } } } Loading @@ -1588,6 +1599,11 @@ public final class BatteryStatsImpl extends BatteryStats { } noteStopWakeLocked(-1, -1, "dummy", WAKE_TYPE_PARTIAL); // Update discharge amounts. if (mOnBatteryInternal) { updateDischargeScreenLevels(true, false); } } } Loading Loading @@ -3910,8 +3926,7 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeStartLevel = 0; mDischargeUnplugLevel = 0; mDischargeCurrentLevel = 0; mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; initDischarge(); } public BatteryStatsImpl(Parcel p) { Loading Loading @@ -3982,6 +3997,15 @@ public final class BatteryStatsImpl extends BatteryStats { mUnpluggedBatteryRealtime = getBatteryRealtimeLocked(mRealtimeStart); } void initDischarge() { mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; mDischargeAmountScreenOn = 0; mDischargeAmountScreenOnSinceCharge = 0; mDischargeAmountScreenOff = 0; mDischargeAmountScreenOffSinceCharge = 0; } public void resetAllStatsLocked() { mStartCount = 0; initTimes(); Loading Loading @@ -4018,12 +4042,34 @@ public final class BatteryStatsImpl extends BatteryStats { mKernelWakelockStats.clear(); } mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; initDischarge(); clearHistoryLocked(); } void updateDischargeScreenLevels(boolean oldScreenOn, boolean newScreenOn) { if (oldScreenOn) { int diff = mDischargeScreenOnUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOn += diff; mDischargeAmountScreenOnSinceCharge += diff; } } else { int diff = mDischargeScreenOffUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOff += diff; mDischargeAmountScreenOffSinceCharge += diff; } } if (newScreenOn) { mDischargeScreenOnUnplugLevel = mDischargeCurrentLevel; mDischargeScreenOffUnplugLevel = 0; } else { mDischargeScreenOnUnplugLevel = 0; mDischargeScreenOffUnplugLevel = mDischargeCurrentLevel; } } void setOnBattery(boolean onBattery, int oldStatus, int level) { synchronized(this) { boolean doWrite = false; Loading Loading @@ -4058,6 +4104,15 @@ public final class BatteryStatsImpl extends BatteryStats { mUnpluggedBatteryUptime = getBatteryUptimeLocked(uptime); mUnpluggedBatteryRealtime = getBatteryRealtimeLocked(realtime); mDischargeCurrentLevel = mDischargeUnplugLevel = level; if (mScreenOn) { mDischargeScreenOnUnplugLevel = level; mDischargeScreenOffUnplugLevel = 0; } else { mDischargeScreenOnUnplugLevel = 0; mDischargeScreenOffUnplugLevel = level; } mDischargeAmountScreenOn = 0; mDischargeAmountScreenOff = 0; doUnplugLocked(mUnpluggedBatteryUptime, mUnpluggedBatteryRealtime); } else { updateKernelWakelocksLocked(); Loading @@ -4073,6 +4128,7 @@ public final class BatteryStatsImpl extends BatteryStats { mLowDischargeAmountSinceCharge += mDischargeUnplugLevel-level-1; mHighDischargeAmountSinceCharge += mDischargeUnplugLevel-level; } updateDischargeScreenLevels(mScreenOn, mScreenOn); doPlugLocked(getBatteryUptimeLocked(uptime), getBatteryRealtimeLocked(realtime)); } if (doWrite || (mLastWriteTime + (60 * 1000)) < mSecRealtime) { Loading Loading @@ -4362,6 +4418,50 @@ public final class BatteryStatsImpl extends BatteryStats { } } public int getDischargeAmountScreenOn() { synchronized(this) { int val = mDischargeAmountScreenOn; if (mOnBattery && mScreenOn && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOnSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOnSinceCharge; if (mOnBattery && mScreenOn && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOff() { synchronized(this) { int val = mDischargeAmountScreenOff; if (mOnBattery && !mScreenOn && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOffSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOffSinceCharge; if (mOnBattery && !mScreenOn && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } return val; } } @Override public int getCpuSpeedSteps() { return sNumSpeedSteps; Loading Loading @@ -4667,6 +4767,8 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeCurrentLevel = in.readInt(); mLowDischargeAmountSinceCharge = in.readInt(); mHighDischargeAmountSinceCharge = in.readInt(); mDischargeAmountScreenOnSinceCharge = in.readInt(); mDischargeAmountScreenOffSinceCharge = in.readInt(); mStartCount++; Loading Loading @@ -4862,6 +4964,8 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(mDischargeCurrentLevel); out.writeInt(getLowDischargeAmountSinceCharge()); out.writeInt(getHighDischargeAmountSinceCharge()); out.writeInt(getDischargeAmountScreenOnSinceCharge()); out.writeInt(getDischargeAmountScreenOffSinceCharge()); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { Loading Loading @@ -5101,6 +5205,10 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeCurrentLevel = in.readInt(); mLowDischargeAmountSinceCharge = in.readInt(); mHighDischargeAmountSinceCharge = in.readInt(); mDischargeAmountScreenOn = in.readInt(); mDischargeAmountScreenOnSinceCharge = in.readInt(); mDischargeAmountScreenOff = in.readInt(); mDischargeAmountScreenOffSinceCharge = in.readInt(); mLastWriteTime = in.readLong(); mMobileDataRx[STATS_LAST] = in.readLong(); Loading Loading @@ -5202,6 +5310,10 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(mDischargeCurrentLevel); out.writeInt(mLowDischargeAmountSinceCharge); out.writeInt(mHighDischargeAmountSinceCharge); out.writeInt(mDischargeAmountScreenOn); out.writeInt(mDischargeAmountScreenOnSinceCharge); out.writeInt(mDischargeAmountScreenOff); out.writeInt(mDischargeAmountScreenOffSinceCharge); out.writeLong(mLastWriteTime); out.writeLong(getMobileTcpBytesReceived(STATS_SINCE_UNPLUGGED)); Loading Loading
core/java/android/os/BatteryStats.java +44 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ public abstract class BatteryStats implements Parcelable { private static final String NETWORK_DATA = "nt"; private static final String USER_ACTIVITY_DATA = "ua"; private static final String BATTERY_DATA = "bt"; private static final String BATTERY_DISCHARGE_DATA = "dc"; private static final String BATTERY_LEVEL_DATA = "lv"; private static final String WIFI_LOCK_DATA = "wfl"; private static final String MISC_DATA = "m"; Loading Loading @@ -803,6 +804,30 @@ public abstract class BatteryStats implements Parcelable { */ public abstract int getHighDischargeAmountSinceCharge(); /** * Get the amount the battery has discharged while the screen was on, * since the last time power was unplugged. */ public abstract int getDischargeAmountScreenOn(); /** * Get the amount the battery has discharged while the screen was on, * since the last time the device was charged. */ public abstract int getDischargeAmountScreenOnSinceCharge(); /** * Get the amount the battery has discharged while the screen was off, * since the last time power was unplugged. */ public abstract int getDischargeAmountScreenOff(); /** * Get the amount the battery has discharged while the screen was off, * since the last time the device was charged. */ public abstract int getDischargeAmountScreenOffSinceCharge(); /** * Returns the total, last, or current battery uptime in microseconds. * Loading Loading @@ -1098,6 +1123,17 @@ public abstract class BatteryStats implements Parcelable { getDischargeCurrentLevel()); } if (which == STATS_SINCE_UNPLUGGED) { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff()); } else { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getLowDischargeAmountSinceCharge(), getHighDischargeAmountSinceCharge(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff()); } if (reqUid < 0) { Map<String, ? extends BatteryStats.Timer> kernelWakelocks = getKernelWakelockStats(); if (kernelWakelocks.size() > 0) { Loading Loading @@ -1454,6 +1490,10 @@ public abstract class BatteryStats implements Parcelable { pw.print(prefix); pw.print(" Last discharge cycle end level: "); pw.println(getDischargeCurrentLevel()); } pw.print(prefix); pw.print(" Amount discharged while screen on: "); pw.println(getDischargeAmountScreenOn()); pw.print(prefix); pw.print(" Amount discharged while screen off: "); pw.println(getDischargeAmountScreenOff()); pw.println(" "); } else { pw.print(prefix); pw.println(" Device battery use since last full charge"); Loading @@ -1461,6 +1501,10 @@ public abstract class BatteryStats implements Parcelable { pw.println(getLowDischargeAmountSinceCharge()); pw.print(prefix); pw.print(" Amount discharged (upper bound): "); pw.println(getHighDischargeAmountSinceCharge()); pw.print(prefix); pw.print(" Amount discharged while screen on: "); pw.println(getDischargeAmountScreenOnSinceCharge()); pw.print(prefix); pw.print(" Amount discharged while screen off: "); pw.println(getDischargeAmountScreenOffSinceCharge()); pw.println(" "); } Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +117 −5 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version private static final int VERSION = 52; private static final int VERSION = 54; // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS = 2000; Loading Loading @@ -237,6 +237,12 @@ public final class BatteryStatsImpl extends BatteryStats { int mDischargeCurrentLevel; int mLowDischargeAmountSinceCharge; int mHighDischargeAmountSinceCharge; int mDischargeScreenOnUnplugLevel; int mDischargeScreenOffUnplugLevel; int mDischargeAmountScreenOn; int mDischargeAmountScreenOnSinceCharge; int mDischargeAmountScreenOff; int mDischargeAmountScreenOffSinceCharge; long mLastWriteTime = 0; // Milliseconds Loading Loading @@ -1572,6 +1578,11 @@ public final class BatteryStatsImpl extends BatteryStats { // Fake a wake lock, so we consider the device waked as long // as the screen is on. noteStartWakeLocked(-1, -1, "dummy", WAKE_TYPE_PARTIAL); // Update discharge amounts. if (mOnBatteryInternal) { updateDischargeScreenLevels(false, true); } } } Loading @@ -1588,6 +1599,11 @@ public final class BatteryStatsImpl extends BatteryStats { } noteStopWakeLocked(-1, -1, "dummy", WAKE_TYPE_PARTIAL); // Update discharge amounts. if (mOnBatteryInternal) { updateDischargeScreenLevels(true, false); } } } Loading Loading @@ -3910,8 +3926,7 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeStartLevel = 0; mDischargeUnplugLevel = 0; mDischargeCurrentLevel = 0; mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; initDischarge(); } public BatteryStatsImpl(Parcel p) { Loading Loading @@ -3982,6 +3997,15 @@ public final class BatteryStatsImpl extends BatteryStats { mUnpluggedBatteryRealtime = getBatteryRealtimeLocked(mRealtimeStart); } void initDischarge() { mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; mDischargeAmountScreenOn = 0; mDischargeAmountScreenOnSinceCharge = 0; mDischargeAmountScreenOff = 0; mDischargeAmountScreenOffSinceCharge = 0; } public void resetAllStatsLocked() { mStartCount = 0; initTimes(); Loading Loading @@ -4018,12 +4042,34 @@ public final class BatteryStatsImpl extends BatteryStats { mKernelWakelockStats.clear(); } mLowDischargeAmountSinceCharge = 0; mHighDischargeAmountSinceCharge = 0; initDischarge(); clearHistoryLocked(); } void updateDischargeScreenLevels(boolean oldScreenOn, boolean newScreenOn) { if (oldScreenOn) { int diff = mDischargeScreenOnUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOn += diff; mDischargeAmountScreenOnSinceCharge += diff; } } else { int diff = mDischargeScreenOffUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOff += diff; mDischargeAmountScreenOffSinceCharge += diff; } } if (newScreenOn) { mDischargeScreenOnUnplugLevel = mDischargeCurrentLevel; mDischargeScreenOffUnplugLevel = 0; } else { mDischargeScreenOnUnplugLevel = 0; mDischargeScreenOffUnplugLevel = mDischargeCurrentLevel; } } void setOnBattery(boolean onBattery, int oldStatus, int level) { synchronized(this) { boolean doWrite = false; Loading Loading @@ -4058,6 +4104,15 @@ public final class BatteryStatsImpl extends BatteryStats { mUnpluggedBatteryUptime = getBatteryUptimeLocked(uptime); mUnpluggedBatteryRealtime = getBatteryRealtimeLocked(realtime); mDischargeCurrentLevel = mDischargeUnplugLevel = level; if (mScreenOn) { mDischargeScreenOnUnplugLevel = level; mDischargeScreenOffUnplugLevel = 0; } else { mDischargeScreenOnUnplugLevel = 0; mDischargeScreenOffUnplugLevel = level; } mDischargeAmountScreenOn = 0; mDischargeAmountScreenOff = 0; doUnplugLocked(mUnpluggedBatteryUptime, mUnpluggedBatteryRealtime); } else { updateKernelWakelocksLocked(); Loading @@ -4073,6 +4128,7 @@ public final class BatteryStatsImpl extends BatteryStats { mLowDischargeAmountSinceCharge += mDischargeUnplugLevel-level-1; mHighDischargeAmountSinceCharge += mDischargeUnplugLevel-level; } updateDischargeScreenLevels(mScreenOn, mScreenOn); doPlugLocked(getBatteryUptimeLocked(uptime), getBatteryRealtimeLocked(realtime)); } if (doWrite || (mLastWriteTime + (60 * 1000)) < mSecRealtime) { Loading Loading @@ -4362,6 +4418,50 @@ public final class BatteryStatsImpl extends BatteryStats { } } public int getDischargeAmountScreenOn() { synchronized(this) { int val = mDischargeAmountScreenOn; if (mOnBattery && mScreenOn && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOnSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOnSinceCharge; if (mOnBattery && mScreenOn && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOff() { synchronized(this) { int val = mDischargeAmountScreenOff; if (mOnBattery && !mScreenOn && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } return val; } } public int getDischargeAmountScreenOffSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOffSinceCharge; if (mOnBattery && !mScreenOn && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } return val; } } @Override public int getCpuSpeedSteps() { return sNumSpeedSteps; Loading Loading @@ -4667,6 +4767,8 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeCurrentLevel = in.readInt(); mLowDischargeAmountSinceCharge = in.readInt(); mHighDischargeAmountSinceCharge = in.readInt(); mDischargeAmountScreenOnSinceCharge = in.readInt(); mDischargeAmountScreenOffSinceCharge = in.readInt(); mStartCount++; Loading Loading @@ -4862,6 +4964,8 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(mDischargeCurrentLevel); out.writeInt(getLowDischargeAmountSinceCharge()); out.writeInt(getHighDischargeAmountSinceCharge()); out.writeInt(getDischargeAmountScreenOnSinceCharge()); out.writeInt(getDischargeAmountScreenOffSinceCharge()); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { Loading Loading @@ -5101,6 +5205,10 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeCurrentLevel = in.readInt(); mLowDischargeAmountSinceCharge = in.readInt(); mHighDischargeAmountSinceCharge = in.readInt(); mDischargeAmountScreenOn = in.readInt(); mDischargeAmountScreenOnSinceCharge = in.readInt(); mDischargeAmountScreenOff = in.readInt(); mDischargeAmountScreenOffSinceCharge = in.readInt(); mLastWriteTime = in.readLong(); mMobileDataRx[STATS_LAST] = in.readLong(); Loading Loading @@ -5202,6 +5310,10 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(mDischargeCurrentLevel); out.writeInt(mLowDischargeAmountSinceCharge); out.writeInt(mHighDischargeAmountSinceCharge); out.writeInt(mDischargeAmountScreenOn); out.writeInt(mDischargeAmountScreenOnSinceCharge); out.writeInt(mDischargeAmountScreenOff); out.writeInt(mDischargeAmountScreenOffSinceCharge); out.writeLong(mLastWriteTime); out.writeLong(getMobileTcpBytesReceived(STATS_SINCE_UNPLUGGED)); Loading