Merge "Export methods from BatteryEntry and controller for battery usage" into sc-dev
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user