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

Commit 3cbcbeba authored by Adam Bookatz's avatar Adam Bookatz Committed by Android (Google) Code Review
Browse files

Merge "Measured screen energy into BatteryStatsHelper"

parents e7e9d3d2 30594e82
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1656,6 +1656,7 @@ public abstract class BatteryStats implements Parcelable {
        public byte batteryPlugType;

        public short batteryTemperature;
        // Battery voltage in millivolts (mV).
        @UnsupportedAppUsage
        public char batteryVoltage;

+11 −1
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public class AmbientDisplayPowerCalculator extends PowerCalculator {
                    .setConsumedPower(BatteryConsumer.POWER_COMPONENT_USAGE, powerMah)
                    .setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_USAGE, durationMs);
        }
        // TODO(b/178140704): Attribute *measured* total usage for BatteryUsageStats.
    }

    /**
@@ -66,7 +67,8 @@ public class AmbientDisplayPowerCalculator extends PowerCalculator {
    public void calculate(List<BatterySipper> sippers, BatteryStats batteryStats,
            long rawRealtimeUs, long rawUptimeUs, int statsType, SparseArray<UserHandle> asUsers) {
        final long durationMs = calculateDuration(batteryStats, rawRealtimeUs, statsType);
        final double powerMah = mPowerEstimator.calculatePower(durationMs);
        final double powerMah = getMeasuredOrEstimatedPower(
                batteryStats.getScreenDozeEnergy(), durationMs);
        if (powerMah > 0) {
            BatterySipper bs = new BatterySipper(BatterySipper.DrainType.AMBIENT_DISPLAY, null, 0);
            bs.usagePowerMah = powerMah;
@@ -79,4 +81,12 @@ public class AmbientDisplayPowerCalculator extends PowerCalculator {
    private long calculateDuration(BatteryStats batteryStats, long rawRealtimeUs, int statsType) {
        return batteryStats.getScreenDozeTime(rawRealtimeUs, statsType) / 1000;
    }

    private double getMeasuredOrEstimatedPower(long measuredEnergyUJ, long durationMs) {
        if (measuredEnergyUJ != BatteryStats.ENERGY_DATA_UNAVAILABLE) {
            return mAhToUJ(measuredEnergyUJ);
        } else {
            return mPowerEstimator.calculatePower(durationMs);
        }
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ public class BatterySipper implements Comparable<BatterySipper> {
    /**
     * Smeared power from screen usage.
     * We split the screen usage power and smear them among apps, based on activity time.
     * The actual screen usage power may be measured or estimated, affecting the granularity and
     * accuracy of the smearing, but the smearing algorithm is essentially the same.
     */
    public double screenPowerMah;

+0 −1
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.telephony.TelephonyManager;
import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.SparseArray;
+1 −5
Original line number Diff line number Diff line
@@ -8633,11 +8633,7 @@ public class BatteryStatsImpl extends BatteryStats {
        @Override
        public long getScreenOnEnergy() {
            if (mUidMeasuredEnergyStats == null) {
                return ENERGY_DATA_UNAVAILABLE;
            }
            return mUidMeasuredEnergyStats.getAccumulatedBucketEnergy(
                    MeasuredEnergyStats.ENERGY_BUCKET_SCREEN_ON);
            return getMeasuredEnergyMicroJoules(MeasuredEnergyStats.ENERGY_BUCKET_SCREEN_ON);
        }
        void initNetworkActivityLocked() {
Loading