Loading src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +48 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo; import android.content.Context; import android.content.pm.PackageInfo; import android.os.AsyncTask; import android.os.BatteryUsageStats; import android.os.Bundle; import android.os.UidBatteryConsumer; Loading @@ -34,6 +35,8 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryChartPreferenceController; import com.android.settings.fuelgauge.BatteryDiffEntry; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryUsageStatsLoader; import com.android.settings.fuelgauge.BatteryUtils; Loading Loading @@ -63,13 +66,18 @@ public class AppBatteryPreferenceController extends BasePreferenceController private final AppInfoDashboardFragment mParent; private String mBatteryPercent; private final String mPackageName; private final int mUid; private BatteryDiffEntry mBatteryDiffEntry; private boolean mBatteryUsageStatsLoaded = false; private boolean mBatteryDiffEntriesLoaded = false; public AppBatteryPreferenceController(Context context, AppInfoDashboardFragment parent, String packageName, Lifecycle lifecycle) { String packageName, int uid, Lifecycle lifecycle) { super(context, KEY_BATTERY); mParent = parent; mBatteryUtils = BatteryUtils.getInstance(mContext); mPackageName = packageName; mUid = uid; if (lifecycle != null) { lifecycle.addObserver(this); } Loading @@ -87,6 +95,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); mPreference.setEnabled(false); loadBatteryDiffEntries(); } @Override Loading @@ -94,6 +103,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController if (!KEY_BATTERY.equals(preference.getKey())) { return false; } if (mBatteryDiffEntry != null) { AdvancedPowerUsageDetail.startBatteryDetailPage( mParent.getActivity(), mParent, mBatteryDiffEntry, mBatteryPercent, /*isValidToShowSummary=*/ true, /*slotInformation=*/ null); return true; } if (isBatteryStatsAvailable()) { final UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); Loading Loading @@ -121,6 +141,31 @@ public class AppBatteryPreferenceController extends BasePreferenceController AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } private void loadBatteryDiffEntries() { new AsyncTask<Void, Void, BatteryDiffEntry>() { @Override protected BatteryDiffEntry doInBackground(Void... unused) { final List<BatteryDiffEntry> batteryDiffEntries = BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext); if (batteryDiffEntries != null) { for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) { if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid) { return batteryDiffEntry; } } } return null; } @Override protected void onPostExecute(BatteryDiffEntry batteryDiffEntry) { mBatteryDiffEntry = batteryDiffEntry; mBatteryDiffEntriesLoaded = true; mPreference.setEnabled(mBatteryUsageStatsLoaded); } }.execute(); } private void onLoadFinished() { if (mBatteryUsageStats == null) { return; Loading @@ -138,7 +183,8 @@ public class AppBatteryPreferenceController extends BasePreferenceController @VisibleForTesting void updateBattery() { mPreference.setEnabled(true); mBatteryUsageStatsLoaded = true; mPreference.setEnabled(mBatteryDiffEntriesLoaded); if (isBatteryStatsAvailable()) { final int percentOfMax = (int) mBatteryUtils.calculateBatteryPercent( mUidBatteryConsumer.getConsumedPower(), mBatteryUsageStats.getConsumedPower(), Loading src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +20 −2 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ public class AppInfoDashboardFragment extends DashboardFragment private PackageInfo mPackageInfo; private int mUserId; private String mPackageName; private int mUid; private DevicePolicyManager mDpm; private UserManager mUserManager; Loading Loading @@ -290,7 +291,8 @@ public class AppInfoDashboardFragment extends DashboardFragment (SettingsActivity) getActivity(), this, lifecycle, packageName, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN); controllers.add(mAppButtonsPreferenceController); controllers.add(new AppBatteryPreferenceController(context, this, packageName, lifecycle)); controllers.add(new AppBatteryPreferenceController( context, this, packageName, getUid(), lifecycle)); controllers.add(new AppMemoryPreferenceController(context, this, lifecycle)); controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName)); controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName)); Loading Loading @@ -561,7 +563,7 @@ public class AppInfoDashboardFragment extends DashboardFragment final Bundle args = getArguments(); mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null; if (mPackageName == null) { final Intent intent = (args == null) ? final Intent intent = args == null ? getActivity().getIntent() : (Intent) args.getParcelable("intent"); if (intent != null) { mPackageName = intent.getData().getSchemeSpecificPart(); Loading @@ -570,6 +572,22 @@ public class AppInfoDashboardFragment extends DashboardFragment return mPackageName; } private int getUid() { if (mUid > 0) { return mUid; } final Bundle args = getArguments(); mUid = (args != null) ? args.getInt(ARG_PACKAGE_UID) : -1; if (mUid <= 0) { final Intent intent = args == null ? getActivity().getIntent() : (Intent) args.getParcelable("intent"); if (intent != null && intent.getExtras() != null) { mUid = intent.getIntExtra("uId", -1); } } return mUid; } @VisibleForTesting void retrieveAppEntry() { final Activity activity = getActivity(); Loading src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.utils.StringUtil; import com.android.settingslib.widget.FooterPreference; import java.util.Arrays; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; Loading Loading @@ -627,7 +627,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return true; } static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) { public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) { final long start = System.currentTimeMillis(); final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = FeatureFactory.getFactory(context) Loading tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,11 @@ public class AppBatteryPreferenceControllerTest { when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID); mController = spy(new AppBatteryPreferenceController( RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */)); RuntimeEnvironment.application, mFragment, "package1" /* packageName */, 0 /* uId */, null /* lifecycle */)); mController.mBatteryUtils = mBatteryUtils; when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mBatteryPreference); } Loading Loading
src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +48 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo; import android.content.Context; import android.content.pm.PackageInfo; import android.os.AsyncTask; import android.os.BatteryUsageStats; import android.os.Bundle; import android.os.UidBatteryConsumer; Loading @@ -34,6 +35,8 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryChartPreferenceController; import com.android.settings.fuelgauge.BatteryDiffEntry; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryUsageStatsLoader; import com.android.settings.fuelgauge.BatteryUtils; Loading Loading @@ -63,13 +66,18 @@ public class AppBatteryPreferenceController extends BasePreferenceController private final AppInfoDashboardFragment mParent; private String mBatteryPercent; private final String mPackageName; private final int mUid; private BatteryDiffEntry mBatteryDiffEntry; private boolean mBatteryUsageStatsLoaded = false; private boolean mBatteryDiffEntriesLoaded = false; public AppBatteryPreferenceController(Context context, AppInfoDashboardFragment parent, String packageName, Lifecycle lifecycle) { String packageName, int uid, Lifecycle lifecycle) { super(context, KEY_BATTERY); mParent = parent; mBatteryUtils = BatteryUtils.getInstance(mContext); mPackageName = packageName; mUid = uid; if (lifecycle != null) { lifecycle.addObserver(this); } Loading @@ -87,6 +95,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); mPreference.setEnabled(false); loadBatteryDiffEntries(); } @Override Loading @@ -94,6 +103,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController if (!KEY_BATTERY.equals(preference.getKey())) { return false; } if (mBatteryDiffEntry != null) { AdvancedPowerUsageDetail.startBatteryDetailPage( mParent.getActivity(), mParent, mBatteryDiffEntry, mBatteryPercent, /*isValidToShowSummary=*/ true, /*slotInformation=*/ null); return true; } if (isBatteryStatsAvailable()) { final UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); Loading Loading @@ -121,6 +141,31 @@ public class AppBatteryPreferenceController extends BasePreferenceController AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } private void loadBatteryDiffEntries() { new AsyncTask<Void, Void, BatteryDiffEntry>() { @Override protected BatteryDiffEntry doInBackground(Void... unused) { final List<BatteryDiffEntry> batteryDiffEntries = BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext); if (batteryDiffEntries != null) { for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) { if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid) { return batteryDiffEntry; } } } return null; } @Override protected void onPostExecute(BatteryDiffEntry batteryDiffEntry) { mBatteryDiffEntry = batteryDiffEntry; mBatteryDiffEntriesLoaded = true; mPreference.setEnabled(mBatteryUsageStatsLoaded); } }.execute(); } private void onLoadFinished() { if (mBatteryUsageStats == null) { return; Loading @@ -138,7 +183,8 @@ public class AppBatteryPreferenceController extends BasePreferenceController @VisibleForTesting void updateBattery() { mPreference.setEnabled(true); mBatteryUsageStatsLoaded = true; mPreference.setEnabled(mBatteryDiffEntriesLoaded); if (isBatteryStatsAvailable()) { final int percentOfMax = (int) mBatteryUtils.calculateBatteryPercent( mUidBatteryConsumer.getConsumedPower(), mBatteryUsageStats.getConsumedPower(), Loading
src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +20 −2 Original line number Diff line number Diff line Loading @@ -109,6 +109,7 @@ public class AppInfoDashboardFragment extends DashboardFragment private PackageInfo mPackageInfo; private int mUserId; private String mPackageName; private int mUid; private DevicePolicyManager mDpm; private UserManager mUserManager; Loading Loading @@ -290,7 +291,8 @@ public class AppInfoDashboardFragment extends DashboardFragment (SettingsActivity) getActivity(), this, lifecycle, packageName, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN); controllers.add(mAppButtonsPreferenceController); controllers.add(new AppBatteryPreferenceController(context, this, packageName, lifecycle)); controllers.add(new AppBatteryPreferenceController( context, this, packageName, getUid(), lifecycle)); controllers.add(new AppMemoryPreferenceController(context, this, lifecycle)); controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName)); controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName)); Loading Loading @@ -561,7 +563,7 @@ public class AppInfoDashboardFragment extends DashboardFragment final Bundle args = getArguments(); mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null; if (mPackageName == null) { final Intent intent = (args == null) ? final Intent intent = args == null ? getActivity().getIntent() : (Intent) args.getParcelable("intent"); if (intent != null) { mPackageName = intent.getData().getSchemeSpecificPart(); Loading @@ -570,6 +572,22 @@ public class AppInfoDashboardFragment extends DashboardFragment return mPackageName; } private int getUid() { if (mUid > 0) { return mUid; } final Bundle args = getArguments(); mUid = (args != null) ? args.getInt(ARG_PACKAGE_UID) : -1; if (mUid <= 0) { final Intent intent = args == null ? getActivity().getIntent() : (Intent) args.getParcelable("intent"); if (intent != null && intent.getExtras() != null) { mUid = intent.getIntExtra("uId", -1); } } return mUid; } @VisibleForTesting void retrieveAppEntry() { final Activity activity = getActivity(); Loading
src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.utils.StringUtil; import com.android.settingslib.widget.FooterPreference; import java.util.Arrays; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; Loading Loading @@ -627,7 +627,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return true; } static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) { public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) { final long start = System.currentTimeMillis(); final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = FeatureFactory.getFactory(context) Loading
tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,11 @@ public class AppBatteryPreferenceControllerTest { when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID); mController = spy(new AppBatteryPreferenceController( RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */)); RuntimeEnvironment.application, mFragment, "package1" /* packageName */, 0 /* uId */, null /* lifecycle */)); mController.mBatteryUtils = mBatteryUtils; when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mBatteryPreference); } Loading