Merge "Add common getBatteryLevel() method into the SettingsLib"

This commit is contained in:
YK Hung
2022-11-29 23:29:45 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 4 deletions

View File

@@ -66,7 +66,7 @@ public class BatteryStatus {
public BatteryStatus(Intent batteryChangedIntent) {
status = batteryChangedIntent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
plugged = batteryChangedIntent.getIntExtra(EXTRA_PLUGGED, 0);
level = batteryChangedIntent.getIntExtra(EXTRA_LEVEL, 0);
level = getBatteryLevel(batteryChangedIntent);
health = batteryChangedIntent.getIntExtra(EXTRA_HEALTH, BATTERY_HEALTH_UNKNOWN);
present = batteryChangedIntent.getBooleanExtra(EXTRA_PRESENT, true);
@@ -188,7 +188,7 @@ public class BatteryStatus {
*/
public static boolean isCharged(Intent batteryChangedIntent) {
int status = batteryChangedIntent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
int level = batteryChangedIntent.getIntExtra(EXTRA_LEVEL, 0);
int level = getBatteryLevel(batteryChangedIntent);
return isCharged(status, level);
}
@@ -204,4 +204,13 @@ public class BatteryStatus {
public static boolean isCharged(int status, int level) {
return status == BATTERY_STATUS_FULL || level >= 100;
}
/** Gets the battery level from the intent. */
public static int getBatteryLevel(Intent batteryChangedIntent) {
final int level = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
final int scale = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
return scale == 0
? -1 /*invalid battery level*/
: Math.round((level / (float) scale) * 100f);
}
}

View File

@@ -317,7 +317,9 @@ public class UtilsTest {
@Test
public void getBatteryStatus_statusIsFull_returnFullString() {
final Intent intent = new Intent().putExtra(BatteryManager.EXTRA_LEVEL, 100);
final Intent intent = new Intent()
.putExtra(BatteryManager.EXTRA_LEVEL, 100)
.putExtra(BatteryManager.EXTRA_SCALE, 100);
final Resources resources = mContext.getResources();
assertThat(Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false)).isEqualTo(
@@ -326,7 +328,9 @@ public class UtilsTest {
@Test
public void getBatteryStatus_statusIsFullAndUseCompactStatus_returnFullyChargedString() {
final Intent intent = new Intent().putExtra(BatteryManager.EXTRA_LEVEL, 100);
final Intent intent = new Intent()
.putExtra(BatteryManager.EXTRA_LEVEL, 100)
.putExtra(BatteryManager.EXTRA_SCALE, 100);
final Resources resources = mContext.getResources();
assertThat(Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ true)).isEqualTo(