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

Commit 4546304f authored by Michael Wachenschwanz's avatar Michael Wachenschwanz
Browse files

Demonstrate per Uid screen energy measurement in BatteryStatsViewer

Bug: 172361024
Test: mp :BatteryStatsViewer && adb shell am start -n com.android.frameworks.core.batterystatsviewer/.BatteryStatsViewerActivity
Change-Id: I1da2b5f23a216b45915921bd43ea5d5e14ddd23a
parent 11cb8f86
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -985,6 +985,15 @@ public abstract class BatteryStats implements Parcelable {
         */
        public abstract void getDeferredJobsLineLocked(StringBuilder sb, int which);

        /**
         * Returns the measured energy in microjoules that the display consumed while the screen
         * was on and uid active.
         * Will return {@link #ENERGY_DATA_UNAVAILABLE} if data is unavailable
         *
         * {@hide}
         */
        public abstract long getScreenOnEnergy();

        public static abstract class Sensor {

            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
+9 −0
Original line number Diff line number Diff line
@@ -8648,6 +8648,15 @@ public class BatteryStatsImpl extends BatteryStats {
            }
        }
        @Override
        public long getScreenOnEnergy() {
            if (mUidMeasuredEnergyStats == null) {
                return ENERGY_DATA_UNAVAILABLE;
            }
            return mUidMeasuredEnergyStats.getAccumulatedBucketEnergy(
                    MeasuredEnergyStats.ENERGY_BUCKET_SCREEN_ON);
        }
        void initNetworkActivityLocked() {
            detachIfNotNull(mNetworkByteActivityCounters);
            mNetworkByteActivityCounters = new LongSamplingCounter[NUM_NETWORK_ACTIVITY_TYPES];
+7 −5
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ public class BatteryConsumerData {
        mBatteryConsumerInfo = BatteryConsumerInfoHelper.makeBatteryConsumerInfo(
                context.getPackageManager(), requestedBatterySipper);
        long totalScreenMeasuredEnergyUJ = batteryStats.getScreenOnEnergy();
        long uidScreenMeasuredEnergyUJ = requestedBatterySipper.uidObj.getScreenOnEnergy();

        addEntry("Total power", EntryType.POWER,
                requestedBatterySipper.totalSmearedPowerMah, totalSmearedPowerMah);
@@ -180,11 +181,12 @@ public class BatteryConsumerData {
                requestedBatterySipper.totalSmearedPowerMah, totalPowerExcludeSystemMah);
        addEntry("Screen, smeared", EntryType.POWER,
                requestedBatterySipper.screenPowerMah, totalScreenPower);
        if (totalScreenMeasuredEnergyUJ != BatteryStats.ENERGY_DATA_UNAVAILABLE) {
            final double measuredCharge = UJ_2_MAH * totalScreenMeasuredEnergyUJ;
            final double ratio = measuredCharge / totalScreenPower;
            addEntry("Screen, smeared (PowerStatsHal adjusted)", EntryType.POWER,
                    requestedBatterySipper.screenPowerMah * ratio, measuredCharge);
        if (uidScreenMeasuredEnergyUJ != BatteryStats.ENERGY_DATA_UNAVAILABLE
                && totalScreenMeasuredEnergyUJ != BatteryStats.ENERGY_DATA_UNAVAILABLE) {
            final double measuredCharge = UJ_2_MAH * uidScreenMeasuredEnergyUJ;
            final double totalMeasuredCharge = UJ_2_MAH * totalScreenMeasuredEnergyUJ;
            addEntry("Screen, measured", EntryType.POWER,
                    measuredCharge, totalMeasuredCharge);
        }
        addEntry("Other, smeared", EntryType.POWER,
                requestedBatterySipper.proportionalSmearMah, totalProportionalSmearMah);