Loading src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +3 −2 Original line number Diff line number Diff line Loading @@ -104,10 +104,11 @@ public class AdvancedPowerUsageDetail extends PowerUsageBase implements final Bundle args = new Bundle(); final BatterySipper sipper = entry.sipper; final BatteryStats.Uid uid = sipper.uidObj; final BatteryUtils batteryUtils = BatteryUtils.getInstance(caller); final long backgroundTimeMs = BatteryUtils.getProcessTimeMs( final long backgroundTimeMs = batteryUtils.getProcessTimeMs( BatteryUtils.StatusType.BACKGROUND, uid, which); final long foregroundTimeMs = BatteryUtils.getProcessTimeMs( final long foregroundTimeMs = batteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, uid, which); if (ArrayUtils.isEmpty(sipper.mPackages)) { Loading src/com/android/settings/fuelgauge/BatteryUtils.java +39 −7 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package com.android.settings.fuelgauge; import android.annotation.IntDef; import android.content.Context; import android.content.pm.PackageManager; import android.os.BatteryStats; import android.os.SystemClock; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.util.Log; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -38,7 +42,23 @@ public class BatteryUtils { int ALL = 2; } public static long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, private static final String TAG = "BatteryUtils"; private static BatteryUtils sInstance; private PackageManager mPackageManager; public static BatteryUtils getInstance(Context context) { if (sInstance == null || sInstance.isDataCorrupted()) { sInstance = new BatteryUtils(context); } return sInstance; } private BatteryUtils(Context context) { mPackageManager = context.getPackageManager(); } public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) { if (uid == null) { return 0; Loading @@ -56,34 +76,46 @@ public class BatteryUtils { return 0; } private static long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) { private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) { final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime()); final long timeUs = uid.getProcessStateTime( BatteryStats.Uid.PROCESS_STATE_BACKGROUND, rawRealTimeUs, which); Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid())); Log.v(TAG, "background time(us): " + timeUs); return convertUsToMs(timeUs); } private static long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) { private long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) { final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime()); final int foregroundTypes[] = {BatteryStats.Uid.PROCESS_STATE_TOP, BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING, BatteryStats.Uid.PROCESS_STATE_FOREGROUND}; Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid())); long timeUs = 0; for (int type : foregroundTypes) { timeUs += uid.getProcessStateTime(type, rawRealTimeUs, which); final long localTime = uid.getProcessStateTime(type, rawRealTimeUs, which); Log.v(TAG, "type: " + type + " time(us): " + localTime); timeUs += localTime; } Log.v(TAG, "foreground time(us): " + timeUs); return convertUsToMs(timeUs); } private static long convertUsToMs(long timeUs) { private long convertUsToMs(long timeUs) { return timeUs / 1000; } private static long convertMsToUs(long timeMs) { private long convertMsToUs(long timeMs) { return timeMs * 1000; } private boolean isDataCorrupted() { return mPackageManager == null; } } src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +4 −2 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { private PackageManager mPackageManager; private UserManager mUserManager; private Map<Integer, PowerUsageData> mBatteryDataMap; private BatteryUtils mBatteryUtils; Handler mHandler = new Handler() { Loading Loading @@ -117,6 +118,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { .getPowerUsageFeatureProvider(context); mPackageManager = context.getPackageManager(); mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mBatteryUtils = BatteryUtils.getInstance(context); } @Override Loading Loading @@ -239,8 +241,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper)); usageData.totalPowerMah += sipper.totalPowerMah; if (sipper.drainType == DrainType.APP && sipper.usageTimeMs != 0) { sipper.usageTimeMs = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, sipper.uidObj, STATUS_TYPE); sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, STATUS_TYPE); } usageData.totalUsageTimeMs += sipper.usageTimeMs; usageData.usageList.add(sipper); Loading src/com/android/settings/fuelgauge/PowerUsageSummary.java +5 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ public class PowerUsageSummary extends PowerUsageBase { PowerGaugePreference mLastFullChargePref; @VisibleForTesting PowerUsageFeatureProvider mPowerFeatureProvider; @VisibleForTesting BatteryUtils mBatteryUtils; private LayoutPreference mBatteryLayoutPref; private PreferenceGroup mAppListGroup; Loading @@ -127,6 +129,8 @@ public class PowerUsageSummary extends PowerUsageBase { KEY_TIME_SINCE_LAST_FULL_CHARGE); mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary); mBatteryUtils = BatteryUtils.getInstance(getContext()); initFeatureProvider(); } Loading Loading @@ -494,7 +498,7 @@ public class PowerUsageSummary extends PowerUsageBase { pref.setOrder(i + 1); pref.setPercent(percentOfTotal); if (sipper.usageTimeMs == 0 && sipper.drainType == DrainType.APP) { sipper.usageTimeMs = BatteryUtils.getProcessTimeMs( sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, mStatsType); } setUsageSummary(pref, usedTime, sipper.usageTimeMs); Loading tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public final class InstalledAppDetailsTest { ApplicationFeatureProvider mApplicationFeatureProvider; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private UserManager mUserManager; @Mock @Mock(answer = Answers.RETURNS_DEEP_STUBS) private SettingsActivity mActivity; @Mock private DevicePolicyManager mDevicePolicyManager; Loading Loading
src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +3 −2 Original line number Diff line number Diff line Loading @@ -104,10 +104,11 @@ public class AdvancedPowerUsageDetail extends PowerUsageBase implements final Bundle args = new Bundle(); final BatterySipper sipper = entry.sipper; final BatteryStats.Uid uid = sipper.uidObj; final BatteryUtils batteryUtils = BatteryUtils.getInstance(caller); final long backgroundTimeMs = BatteryUtils.getProcessTimeMs( final long backgroundTimeMs = batteryUtils.getProcessTimeMs( BatteryUtils.StatusType.BACKGROUND, uid, which); final long foregroundTimeMs = BatteryUtils.getProcessTimeMs( final long foregroundTimeMs = batteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, uid, which); if (ArrayUtils.isEmpty(sipper.mPackages)) { Loading
src/com/android/settings/fuelgauge/BatteryUtils.java +39 −7 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package com.android.settings.fuelgauge; import android.annotation.IntDef; import android.content.Context; import android.content.pm.PackageManager; import android.os.BatteryStats; import android.os.SystemClock; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.util.Log; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -38,7 +42,23 @@ public class BatteryUtils { int ALL = 2; } public static long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, private static final String TAG = "BatteryUtils"; private static BatteryUtils sInstance; private PackageManager mPackageManager; public static BatteryUtils getInstance(Context context) { if (sInstance == null || sInstance.isDataCorrupted()) { sInstance = new BatteryUtils(context); } return sInstance; } private BatteryUtils(Context context) { mPackageManager = context.getPackageManager(); } public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) { if (uid == null) { return 0; Loading @@ -56,34 +76,46 @@ public class BatteryUtils { return 0; } private static long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) { private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) { final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime()); final long timeUs = uid.getProcessStateTime( BatteryStats.Uid.PROCESS_STATE_BACKGROUND, rawRealTimeUs, which); Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid())); Log.v(TAG, "background time(us): " + timeUs); return convertUsToMs(timeUs); } private static long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) { private long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) { final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime()); final int foregroundTypes[] = {BatteryStats.Uid.PROCESS_STATE_TOP, BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING, BatteryStats.Uid.PROCESS_STATE_FOREGROUND}; Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid())); long timeUs = 0; for (int type : foregroundTypes) { timeUs += uid.getProcessStateTime(type, rawRealTimeUs, which); final long localTime = uid.getProcessStateTime(type, rawRealTimeUs, which); Log.v(TAG, "type: " + type + " time(us): " + localTime); timeUs += localTime; } Log.v(TAG, "foreground time(us): " + timeUs); return convertUsToMs(timeUs); } private static long convertUsToMs(long timeUs) { private long convertUsToMs(long timeUs) { return timeUs / 1000; } private static long convertMsToUs(long timeMs) { private long convertMsToUs(long timeMs) { return timeMs * 1000; } private boolean isDataCorrupted() { return mPackageManager == null; } }
src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +4 −2 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { private PackageManager mPackageManager; private UserManager mUserManager; private Map<Integer, PowerUsageData> mBatteryDataMap; private BatteryUtils mBatteryUtils; Handler mHandler = new Handler() { Loading Loading @@ -117,6 +118,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { .getPowerUsageFeatureProvider(context); mPackageManager = context.getPackageManager(); mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mBatteryUtils = BatteryUtils.getInstance(context); } @Override Loading Loading @@ -239,8 +241,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper)); usageData.totalPowerMah += sipper.totalPowerMah; if (sipper.drainType == DrainType.APP && sipper.usageTimeMs != 0) { sipper.usageTimeMs = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, sipper.uidObj, STATUS_TYPE); sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, STATUS_TYPE); } usageData.totalUsageTimeMs += sipper.usageTimeMs; usageData.usageList.add(sipper); Loading
src/com/android/settings/fuelgauge/PowerUsageSummary.java +5 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ public class PowerUsageSummary extends PowerUsageBase { PowerGaugePreference mLastFullChargePref; @VisibleForTesting PowerUsageFeatureProvider mPowerFeatureProvider; @VisibleForTesting BatteryUtils mBatteryUtils; private LayoutPreference mBatteryLayoutPref; private PreferenceGroup mAppListGroup; Loading @@ -127,6 +129,8 @@ public class PowerUsageSummary extends PowerUsageBase { KEY_TIME_SINCE_LAST_FULL_CHARGE); mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary); mBatteryUtils = BatteryUtils.getInstance(getContext()); initFeatureProvider(); } Loading Loading @@ -494,7 +498,7 @@ public class PowerUsageSummary extends PowerUsageBase { pref.setOrder(i + 1); pref.setPercent(percentOfTotal); if (sipper.usageTimeMs == 0 && sipper.drainType == DrainType.APP) { sipper.usageTimeMs = BatteryUtils.getProcessTimeMs( sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs( BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, mStatsType); } setUsageSummary(pref, usedTime, sipper.usageTimeMs); Loading
tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public final class InstalledAppDetailsTest { ApplicationFeatureProvider mApplicationFeatureProvider; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private UserManager mUserManager; @Mock @Mock(answer = Answers.RETURNS_DEEP_STUBS) private SettingsActivity mActivity; @Mock private DevicePolicyManager mDevicePolicyManager; Loading