Begin transition from BatteryStatsHelper to BatteryUsageStats API.

For now, keep both BatteryStatsHelper and BatteryUsageStats in play.
The plan is to transition from the former to the latter, one usage
at a time.  When all is said and done, all references to
BatteryStatsHelper will be gone.

Bug: 173745486
Test: atest --host SettingsRoboTests

Change-Id: I37e1dfff0043b1845992f18d72067bb547bb69ff
This commit is contained in:
Dmitri Plotnikov
2020-11-16 15:22:21 -08:00
parent 3deffe9f04
commit 97b3325ece
7 changed files with 190 additions and 29 deletions

View File

@@ -28,6 +28,7 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Process;
import android.os.RemoteException;
import android.os.UidBatteryConsumer;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
@@ -122,6 +123,7 @@ public class BatteryEntry {
public final Context context;
public final BatterySipper sipper;
public final UidBatteryConsumer uidBatteryConsumer;
public String name;
public Drawable icon;
@@ -134,10 +136,41 @@ public class BatteryEntry {
Drawable icon;
}
public BatteryEntry(Context context, Handler handler, UserManager um, BatterySipper sipper) {
public BatteryEntry(Context context, Handler handler, UserManager um, BatterySipper sipper,
UidBatteryConsumer uidBatteryConsumer) {
sHandler = handler;
this.context = context;
this.sipper = sipper;
this.uidBatteryConsumer = uidBatteryConsumer;
// This condition is met when BatteryEntry is initialized from BatteryUsageStats.
// Once the conversion from BatteryStatsHelper is completed, the condition will
// always be true and can be removed.
if (uidBatteryConsumer != null) {
PackageManager pm = context.getPackageManager();
int uid = uidBatteryConsumer.getUid();
String[] packages = pm.getPackagesForUid(uid);
// Apps should only have one package
if (packages == null || packages.length != 1) {
name = uidBatteryConsumer.getPackageWithHighestDrain();
} else {
defaultPackageName = packages[0];
try {
ApplicationInfo appInfo =
pm.getApplicationInfo(defaultPackageName, 0 /* no flags */);
name = pm.getApplicationLabel(appInfo).toString();
} catch (NameNotFoundException e) {
Log.d(TAG, "PackageManager failed to retrieve ApplicationInfo for: "
+ defaultPackageName);
name = defaultPackageName;
}
}
if ((name == null || iconId == 0) && uid != 0) {
getQuickNameIconForUid(uid);
}
return;
}
switch (sipper.drainType) {
case IDLE:
name = context.getResources().getString(R.string.power_idle);