Add new battery entry into AppInfo page launch variable
- Insert uid as launch variable - Add new launch type into AppInfo page Bug: 178197718 Test: make RunSettingsRoboTests Change-Id: I8c68bebd02491dbbc1516bbebc14254ed06940f6
This commit is contained in:
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
@@ -87,6 +95,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
||||
super.displayPreference(screen);
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
mPreference.setEnabled(false);
|
||||
loadBatteryDiffEntries();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
@@ -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(),
|
||||
|
@@ -111,6 +111,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
||||
private PackageInfo mPackageInfo;
|
||||
private int mUserId;
|
||||
private String mPackageName;
|
||||
private int mUid;
|
||||
|
||||
private DevicePolicyManager mDpm;
|
||||
private UserManager mUserManager;
|
||||
@@ -297,7 +298,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));
|
||||
@@ -568,7 +570,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();
|
||||
@@ -577,6 +579,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();
|
||||
|
@@ -50,8 +50,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;
|
||||
@@ -638,7 +638,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)
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user