Merge "Export methods from BatteryEntry and controller for battery usage" into sc-dev

This commit is contained in:
YUKAI HUNG
2021-03-24 09:27:32 +00:00
committed by Android (Google) Code Review
2 changed files with 82 additions and 46 deletions

View File

@@ -257,6 +257,27 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
BatteryEntry.startRequestQueue(); BatteryEntry.startRequestQueue();
} }
/**
* Gets the BatteryEntry list by using the supplied BatteryUsageStats.
*/
public List<BatteryEntry> getBatteryEntryList(
BatteryUsageStats batteryUsageStats, boolean showAllApps) {
mBatteryUsageStats = USE_FAKE_DATA ? getFakeStats() : batteryUsageStats;
if (!sConfig.shouldShowBatteryAttributionList(mContext)) {
return null;
}
final int dischargePercentage = getDischargePercentage(batteryUsageStats);
final List<BatteryEntry> usageList = getCoalescedUsageList(showAllApps);
final double totalPower = batteryUsageStats.getConsumedPower();
for (int i = 0; i < usageList.size(); i++) {
final BatteryEntry entry = usageList.get(i);
final double percentOfTotal = mBatteryUtils.calculateBatteryPercent(
entry.getConsumedPower(), totalPower, dischargePercentage);
entry.percent = percentOfTotal;
}
return usageList;
}
private int getDischargePercentage(BatteryUsageStats batteryUsageStats) { private int getDischargePercentage(BatteryUsageStats batteryUsageStats) {
int dischargePercentage = batteryUsageStats.getDischargePercentage(); int dischargePercentage = batteryUsageStats.getDischargePercentage();
if (dischargePercentage < 0) { if (dischargePercentage < 0) {
@@ -311,7 +332,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
final int index = batteryEntryList.indexOfKey(realUid); final int index = batteryEntryList.indexOfKey(realUid);
if (index < 0) { if (index < 0) {
// New entry. // New entry.
batteryEntryList.put(realUid, new BatteryEntry(mActivity, mHandler, mUserManager, batteryEntryList.put(realUid, new BatteryEntry(mContext, mHandler, mUserManager,
consumer, isHidden, packages, null)); consumer, isHidden, packages, null));
} else { } else {
// Combine BatterySippers if we already have one with this UID. // Combine BatterySippers if we already have one with this UID.
@@ -328,7 +349,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
continue; continue;
} }
results.add(new BatteryEntry(mActivity, mHandler, mUserManager, results.add(new BatteryEntry(mContext, mHandler, mUserManager,
consumer, /* isHidden */ true, null, null)); consumer, /* isHidden */ true, null, null));
} }
@@ -337,7 +358,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
mBatteryUsageStats.getUserBatteryConsumers(); mBatteryUsageStats.getUserBatteryConsumers();
for (int i = 0, size = userBatteryConsumers.size(); i < size; i++) { for (int i = 0, size = userBatteryConsumers.size(); i < size; i++) {
final UserBatteryConsumer consumer = userBatteryConsumers.get(i); final UserBatteryConsumer consumer = userBatteryConsumers.get(i);
results.add(new BatteryEntry(mActivity, mHandler, mUserManager, results.add(new BatteryEntry(mContext, mHandler, mUserManager,
consumer, /* isHidden */ true, null, null)); consumer, /* isHidden */ true, null, null));
} }
} }

View File

@@ -35,6 +35,7 @@ import android.os.UserBatteryConsumer;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.util.Log; import android.util.Log;
import android.util.Pair;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -182,49 +183,10 @@ public class BatteryEntry {
getQuickNameIconForUid(uid, packages); getQuickNameIconForUid(uid, packages);
return; return;
} else if (batteryConsumer instanceof SystemBatteryConsumer) { } else if (batteryConsumer instanceof SystemBatteryConsumer) {
switch(((SystemBatteryConsumer) batteryConsumer).getDrainType()) { final Pair<Integer, String> resourcePair = getResourcePairFromDrainType(
case SystemBatteryConsumer.DRAIN_TYPE_AMBIENT_DISPLAY: context, ((SystemBatteryConsumer) batteryConsumer).getDrainType());
name = context.getResources().getString(R.string.ambient_display_screen_title); iconId = resourcePair.first;
iconId = R.drawable.ic_settings_aod; name = resourcePair.second;
break;
case SystemBatteryConsumer.DRAIN_TYPE_BLUETOOTH:
name = context.getResources().getString(R.string.power_bluetooth);
iconId = com.android.internal.R.drawable.ic_settings_bluetooth;
break;
case SystemBatteryConsumer.DRAIN_TYPE_CAMERA:
name = context.getResources().getString(R.string.power_camera);
iconId = R.drawable.ic_settings_camera;
break;
case SystemBatteryConsumer.DRAIN_TYPE_MOBILE_RADIO:
name = context.getResources().getString(R.string.power_cell);
iconId = R.drawable.ic_cellular_1_bar;
break;
case SystemBatteryConsumer.DRAIN_TYPE_FLASHLIGHT:
name = context.getResources().getString(R.string.power_flashlight);
iconId = R.drawable.ic_settings_display;
break;
case SystemBatteryConsumer.DRAIN_TYPE_PHONE:
name = context.getResources().getString(R.string.power_phone);
iconId = R.drawable.ic_settings_voice_calls;
break;
case SystemBatteryConsumer.DRAIN_TYPE_SCREEN:
name = context.getResources().getString(R.string.power_screen);
iconId = R.drawable.ic_settings_display;
break;
case SystemBatteryConsumer.DRAIN_TYPE_WIFI:
name = context.getResources().getString(R.string.power_wifi);
iconId = R.drawable.ic_settings_wireless;
break;
case SystemBatteryConsumer.DRAIN_TYPE_IDLE:
case SystemBatteryConsumer.DRAIN_TYPE_MEMORY:
name = context.getResources().getString(R.string.power_idle);
iconId = R.drawable.ic_settings_phone_idle;
break;
case SystemBatteryConsumer.DRAIN_TYPE_CUSTOM:
name = null;
iconId = R.drawable.ic_power_system;
break;
}
} else if (batteryConsumer instanceof UserBatteryConsumer) { } else if (batteryConsumer instanceof UserBatteryConsumer) {
UserInfo info = um.getUserInfo(((UserBatteryConsumer) batteryConsumer).getUserId()); UserInfo info = um.getUserInfo(((UserBatteryConsumer) batteryConsumer).getUserId());
if (info != null) { if (info != null) {
@@ -493,4 +455,57 @@ public class BatteryEntry {
((UidBatteryConsumer) batteryConsumer).getPackageWithHighestDrain(); ((UidBatteryConsumer) batteryConsumer).getPackageWithHighestDrain();
} }
} }
/**
* Gets icon ID and name from system battery consumer drain type.
*/
public static Pair<Integer, String> getResourcePairFromDrainType(
Context context, int drainType) {
String name = null;
int iconId = 0;
switch (drainType) {
case SystemBatteryConsumer.DRAIN_TYPE_AMBIENT_DISPLAY:
name = context.getResources().getString(R.string.ambient_display_screen_title);
iconId = R.drawable.ic_settings_aod;
break;
case SystemBatteryConsumer.DRAIN_TYPE_BLUETOOTH:
name = context.getResources().getString(R.string.power_bluetooth);
iconId = com.android.internal.R.drawable.ic_settings_bluetooth;
break;
case SystemBatteryConsumer.DRAIN_TYPE_CAMERA:
name = context.getResources().getString(R.string.power_camera);
iconId = R.drawable.ic_settings_camera;
break;
case SystemBatteryConsumer.DRAIN_TYPE_MOBILE_RADIO:
name = context.getResources().getString(R.string.power_cell);
iconId = R.drawable.ic_cellular_1_bar;
break;
case SystemBatteryConsumer.DRAIN_TYPE_FLASHLIGHT:
name = context.getResources().getString(R.string.power_flashlight);
iconId = R.drawable.ic_settings_display;
break;
case SystemBatteryConsumer.DRAIN_TYPE_PHONE:
name = context.getResources().getString(R.string.power_phone);
iconId = R.drawable.ic_settings_voice_calls;
break;
case SystemBatteryConsumer.DRAIN_TYPE_SCREEN:
name = context.getResources().getString(R.string.power_screen);
iconId = R.drawable.ic_settings_display;
break;
case SystemBatteryConsumer.DRAIN_TYPE_WIFI:
name = context.getResources().getString(R.string.power_wifi);
iconId = R.drawable.ic_settings_wireless;
break;
case SystemBatteryConsumer.DRAIN_TYPE_IDLE:
case SystemBatteryConsumer.DRAIN_TYPE_MEMORY:
name = context.getResources().getString(R.string.power_idle);
iconId = R.drawable.ic_settings_phone_idle;
break;
case SystemBatteryConsumer.DRAIN_TYPE_CUSTOM:
name = null;
iconId = R.drawable.ic_power_system;
break;
}
return new Pair<>(Integer.valueOf(iconId), name);
}
} }