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

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

Merge "Measured screen energy into BatteryStatsHelper" into sc-dev

parents 5e05f481 c7f41b68
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