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.Context;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.os.AsyncTask;
|
||||||
import android.os.BatteryUsageStats;
|
import android.os.BatteryUsageStats;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UidBatteryConsumer;
|
import android.os.UidBatteryConsumer;
|
||||||
@@ -34,6 +35,8 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
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.BatteryEntry;
|
||||||
import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
|
import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
|
||||||
import com.android.settings.fuelgauge.BatteryUtils;
|
import com.android.settings.fuelgauge.BatteryUtils;
|
||||||
@@ -63,13 +66,18 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
private final AppInfoDashboardFragment mParent;
|
private final AppInfoDashboardFragment mParent;
|
||||||
private String mBatteryPercent;
|
private String mBatteryPercent;
|
||||||
private final String mPackageName;
|
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,
|
public AppBatteryPreferenceController(Context context, AppInfoDashboardFragment parent,
|
||||||
String packageName, Lifecycle lifecycle) {
|
String packageName, int uid, Lifecycle lifecycle) {
|
||||||
super(context, KEY_BATTERY);
|
super(context, KEY_BATTERY);
|
||||||
mParent = parent;
|
mParent = parent;
|
||||||
mBatteryUtils = BatteryUtils.getInstance(mContext);
|
mBatteryUtils = BatteryUtils.getInstance(mContext);
|
||||||
mPackageName = packageName;
|
mPackageName = packageName;
|
||||||
|
mUid = uid;
|
||||||
if (lifecycle != null) {
|
if (lifecycle != null) {
|
||||||
lifecycle.addObserver(this);
|
lifecycle.addObserver(this);
|
||||||
}
|
}
|
||||||
@@ -87,6 +95,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
mPreference = screen.findPreference(getPreferenceKey());
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
mPreference.setEnabled(false);
|
mPreference.setEnabled(false);
|
||||||
|
loadBatteryDiffEntries();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -94,6 +103,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
if (!KEY_BATTERY.equals(preference.getKey())) {
|
if (!KEY_BATTERY.equals(preference.getKey())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (mBatteryDiffEntry != null) {
|
||||||
|
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||||
|
mParent.getActivity(),
|
||||||
|
mParent,
|
||||||
|
mBatteryDiffEntry,
|
||||||
|
mBatteryPercent,
|
||||||
|
/*isValidToShowSummary=*/ true,
|
||||||
|
/*slotInformation=*/ null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (isBatteryStatsAvailable()) {
|
if (isBatteryStatsAvailable()) {
|
||||||
final UserManager userManager =
|
final UserManager userManager =
|
||||||
(UserManager) mContext.getSystemService(Context.USER_SERVICE);
|
(UserManager) mContext.getSystemService(Context.USER_SERVICE);
|
||||||
@@ -121,6 +141,31 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS);
|
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() {
|
private void onLoadFinished() {
|
||||||
if (mBatteryUsageStats == null) {
|
if (mBatteryUsageStats == null) {
|
||||||
return;
|
return;
|
||||||
@@ -138,7 +183,8 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void updateBattery() {
|
void updateBattery() {
|
||||||
mPreference.setEnabled(true);
|
mBatteryUsageStatsLoaded = true;
|
||||||
|
mPreference.setEnabled(mBatteryDiffEntriesLoaded);
|
||||||
if (isBatteryStatsAvailable()) {
|
if (isBatteryStatsAvailable()) {
|
||||||
final int percentOfMax = (int) mBatteryUtils.calculateBatteryPercent(
|
final int percentOfMax = (int) mBatteryUtils.calculateBatteryPercent(
|
||||||
mUidBatteryConsumer.getConsumedPower(), mBatteryUsageStats.getConsumedPower(),
|
mUidBatteryConsumer.getConsumedPower(), mBatteryUsageStats.getConsumedPower(),
|
||||||
|
@@ -111,6 +111,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
private PackageInfo mPackageInfo;
|
private PackageInfo mPackageInfo;
|
||||||
private int mUserId;
|
private int mUserId;
|
||||||
private String mPackageName;
|
private String mPackageName;
|
||||||
|
private int mUid;
|
||||||
|
|
||||||
private DevicePolicyManager mDpm;
|
private DevicePolicyManager mDpm;
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
@@ -297,7 +298,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
(SettingsActivity) getActivity(), this, lifecycle, packageName, mState,
|
(SettingsActivity) getActivity(), this, lifecycle, packageName, mState,
|
||||||
REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
|
REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
|
||||||
controllers.add(mAppButtonsPreferenceController);
|
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 AppMemoryPreferenceController(context, this, lifecycle));
|
||||||
controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName));
|
controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName));
|
||||||
controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName));
|
controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName));
|
||||||
@@ -568,7 +570,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
final Bundle args = getArguments();
|
final Bundle args = getArguments();
|
||||||
mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
|
mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
|
||||||
if (mPackageName == null) {
|
if (mPackageName == null) {
|
||||||
final Intent intent = (args == null) ?
|
final Intent intent = args == null ?
|
||||||
getActivity().getIntent() : (Intent) args.getParcelable("intent");
|
getActivity().getIntent() : (Intent) args.getParcelable("intent");
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
mPackageName = intent.getData().getSchemeSpecificPart();
|
mPackageName = intent.getData().getSchemeSpecificPart();
|
||||||
@@ -577,6 +579,22 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
return mPackageName;
|
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
|
@VisibleForTesting
|
||||||
void retrieveAppEntry() {
|
void retrieveAppEntry() {
|
||||||
final Activity activity = getActivity();
|
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.utils.StringUtil;
|
||||||
import com.android.settingslib.widget.FooterPreference;
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -638,7 +638,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
|
public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
|
||||||
final long start = System.currentTimeMillis();
|
final long start = System.currentTimeMillis();
|
||||||
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
|
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
|
||||||
FeatureFactory.getFactory(context)
|
FeatureFactory.getFactory(context)
|
||||||
|
@@ -96,7 +96,11 @@ public class AppBatteryPreferenceControllerTest {
|
|||||||
when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID);
|
when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID);
|
||||||
|
|
||||||
mController = spy(new AppBatteryPreferenceController(
|
mController = spy(new AppBatteryPreferenceController(
|
||||||
RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */));
|
RuntimeEnvironment.application,
|
||||||
|
mFragment,
|
||||||
|
"package1" /* packageName */,
|
||||||
|
0 /* uId */,
|
||||||
|
null /* lifecycle */));
|
||||||
mController.mBatteryUtils = mBatteryUtils;
|
mController.mBatteryUtils = mBatteryUtils;
|
||||||
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mBatteryPreference);
|
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mBatteryPreference);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user