Merge "Update the conditions of power plugged determination." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
c2c6c5d058
@@ -307,12 +307,13 @@ public class BatteryInfo {
|
|||||||
info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
|
info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
|
||||||
info.mCharging = info.pluggedStatus != 0;
|
info.mCharging = info.pluggedStatus != 0;
|
||||||
info.averageTimeToDischarge = estimate.getAverageDischargeTime();
|
info.averageTimeToDischarge = estimate.getAverageDischargeTime();
|
||||||
info.isLongLife =
|
|
||||||
batteryBroadcast.getIntExtra(
|
|
||||||
BatteryManager.EXTRA_CHARGING_STATUS,
|
|
||||||
BatteryManager.CHARGING_POLICY_DEFAULT)
|
|
||||||
== BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
|
|
||||||
|
|
||||||
|
final int chargingPolicy =
|
||||||
|
batteryBroadcast.getIntExtra(
|
||||||
|
BatteryManager.EXTRA_CHARGING_STATUS,
|
||||||
|
BatteryManager.CHARGING_POLICY_DEFAULT);
|
||||||
|
|
||||||
|
info.isLongLife = chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
|
||||||
info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
|
info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
|
||||||
info.batteryStatus =
|
info.batteryStatus =
|
||||||
batteryBroadcast.getIntExtra(
|
batteryBroadcast.getIntExtra(
|
||||||
@@ -326,7 +327,15 @@ public class BatteryInfo {
|
|||||||
.getPowerUsageFeatureProvider()
|
.getPowerUsageFeatureProvider()
|
||||||
.isBatteryDefend(info);
|
.isBatteryDefend(info);
|
||||||
}
|
}
|
||||||
if (!info.mCharging) {
|
Log.d(
|
||||||
|
TAG,
|
||||||
|
"chargingPolicy = "
|
||||||
|
+ chargingPolicy
|
||||||
|
+ ", pluggedStatus = "
|
||||||
|
+ info.pluggedStatus
|
||||||
|
+ ", batteryStatus = "
|
||||||
|
+ info.batteryStatus);
|
||||||
|
if (!isPluggedIn(context, info.mCharging, chargingPolicy)) {
|
||||||
updateBatteryInfoDischarging(context, shortString, estimate, info);
|
updateBatteryInfoDischarging(context, shortString, estimate, info);
|
||||||
} else {
|
} else {
|
||||||
updateBatteryInfoCharging(
|
updateBatteryInfoCharging(
|
||||||
@@ -556,6 +565,14 @@ public class BatteryInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isPluggedIn(Context context, boolean isCharging, int chargingPolicy) {
|
||||||
|
return isCharging
|
||||||
|
|| (chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE
|
||||||
|
&& FeatureFactory.getFeatureFactory()
|
||||||
|
.getBatterySettingsFeatureProvider()
|
||||||
|
.isChargingOptimizationMode(context));
|
||||||
|
}
|
||||||
|
|
||||||
public interface BatteryDataParser {
|
public interface BatteryDataParser {
|
||||||
void onParsingStarted(long startTime, long endTime);
|
void onParsingStarted(long startTime, long endTime);
|
||||||
|
|
||||||
|
@@ -48,6 +48,7 @@ import com.android.settings.testutils.BatteryTestUtils;
|
|||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.widget.UsageView;
|
import com.android.settings.widget.UsageView;
|
||||||
import com.android.settingslib.fuelgauge.Estimate;
|
import com.android.settingslib.fuelgauge.Estimate;
|
||||||
|
import com.android.settingslib.utils.PowerUtil;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -93,7 +94,8 @@ public class BatteryInfoTest {
|
|||||||
Map.of(
|
Map.of(
|
||||||
ChargingType.WIRED, BatteryManager.BATTERY_PLUGGED_AC,
|
ChargingType.WIRED, BatteryManager.BATTERY_PLUGGED_AC,
|
||||||
ChargingType.WIRELESS, BatteryManager.BATTERY_PLUGGED_WIRELESS,
|
ChargingType.WIRELESS, BatteryManager.BATTERY_PLUGGED_WIRELESS,
|
||||||
ChargingType.DOCKED, BatteryManager.BATTERY_PLUGGED_DOCK);
|
ChargingType.DOCKED, BatteryManager.BATTERY_PLUGGED_DOCK,
|
||||||
|
ChargingType.NONE, 0);
|
||||||
private static final Map<ChargingSpeed, Integer> CHARGING_SPEED_MAP =
|
private static final Map<ChargingSpeed, Integer> CHARGING_SPEED_MAP =
|
||||||
Map.of(
|
Map.of(
|
||||||
ChargingSpeed.FAST, 1501000,
|
ChargingSpeed.FAST, 1501000,
|
||||||
@@ -823,6 +825,92 @@ public class BatteryInfoTest {
|
|||||||
assertThat(batteryInfo.isLongLife).isFalse();
|
assertThat(batteryInfo.isLongLife).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getBatteryInfo_plugTypeNoneWithLonglifeAndChargeOptimization_chargingString() {
|
||||||
|
prepareTestGetBatteryInfoEnvironment(
|
||||||
|
/* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
|
||||||
|
/* chargingStringV2Enabled= */ false);
|
||||||
|
Intent batteryIntent =
|
||||||
|
createIntentForGetBatteryInfoTest(
|
||||||
|
ChargingType.NONE,
|
||||||
|
ChargingSpeed.REGULAR,
|
||||||
|
/* batteryLevel= */ 85,
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING,
|
||||||
|
/* isLonglife= */ true);
|
||||||
|
var expectedRemainingLabel = "Expected remaining label";
|
||||||
|
var expectedChargeLabel = "85% - " + expectedRemainingLabel;
|
||||||
|
when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
|
||||||
|
.thenReturn(true);
|
||||||
|
when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationRemainingLabel(
|
||||||
|
eq(mContext), anyInt(), anyInt(), anyLong(), anyLong()))
|
||||||
|
.thenReturn(expectedRemainingLabel);
|
||||||
|
when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationChargeLabel(
|
||||||
|
eq(mContext), anyInt(), anyString(), anyLong(), anyLong()))
|
||||||
|
.thenReturn(expectedChargeLabel);
|
||||||
|
var expectedStatusLabel = "Not charging";
|
||||||
|
|
||||||
|
assertGetBatteryInfo(
|
||||||
|
batteryIntent,
|
||||||
|
/* currentTimeMillis= */ UNUSED_TIME_MS,
|
||||||
|
expectedStatusLabel,
|
||||||
|
expectedRemainingLabel,
|
||||||
|
expectedChargeLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getBatteryInfo_plugTypeNoneNotChargeOptimizationLonglife_dischargingString() {
|
||||||
|
prepareTestGetBatteryInfoEnvironment(
|
||||||
|
/* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
|
||||||
|
/* chargingStringV2Enabled= */ false);
|
||||||
|
Intent batteryIntent =
|
||||||
|
createIntentForGetBatteryInfoTest(
|
||||||
|
ChargingType.NONE,
|
||||||
|
ChargingSpeed.REGULAR,
|
||||||
|
/* batteryLevel= */ 85,
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING,
|
||||||
|
/* isLonglife= */ true);
|
||||||
|
var expectedRemainingLabel =
|
||||||
|
PowerUtil.getBatteryRemainingShortStringFormatted(
|
||||||
|
mContext, PowerUtil.convertUsToMs(1000L));
|
||||||
|
when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
|
||||||
|
.thenReturn(false);
|
||||||
|
var expectedStatusLabel = "Not charging";
|
||||||
|
|
||||||
|
assertGetBatteryInfo(
|
||||||
|
batteryIntent,
|
||||||
|
/* currentTimeMillis= */ UNUSED_TIME_MS,
|
||||||
|
expectedStatusLabel,
|
||||||
|
expectedRemainingLabel,
|
||||||
|
expectedRemainingLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getBatteryInfo_plugTypeNoneChargeOptimizationNotLonglife_dischargingString() {
|
||||||
|
prepareTestGetBatteryInfoEnvironment(
|
||||||
|
/* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
|
||||||
|
/* chargingStringV2Enabled= */ false);
|
||||||
|
Intent batteryIntent =
|
||||||
|
createIntentForGetBatteryInfoTest(
|
||||||
|
ChargingType.NONE,
|
||||||
|
ChargingSpeed.REGULAR,
|
||||||
|
/* batteryLevel= */ 85,
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING,
|
||||||
|
/* isLonglife= */ false);
|
||||||
|
var expectedRemainingLabel =
|
||||||
|
PowerUtil.getBatteryRemainingShortStringFormatted(
|
||||||
|
mContext, PowerUtil.convertUsToMs(1000L));
|
||||||
|
when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
|
||||||
|
.thenReturn(true);
|
||||||
|
var expectedStatusLabel = "Not charging";
|
||||||
|
|
||||||
|
assertGetBatteryInfo(
|
||||||
|
batteryIntent,
|
||||||
|
/* currentTimeMillis= */ UNUSED_TIME_MS,
|
||||||
|
expectedStatusLabel,
|
||||||
|
expectedRemainingLabel,
|
||||||
|
expectedRemainingLabel);
|
||||||
|
}
|
||||||
|
|
||||||
private enum ChargingSpeed {
|
private enum ChargingSpeed {
|
||||||
FAST,
|
FAST,
|
||||||
REGULAR,
|
REGULAR,
|
||||||
@@ -832,10 +920,11 @@ public class BatteryInfoTest {
|
|||||||
private enum ChargingType {
|
private enum ChargingType {
|
||||||
WIRED,
|
WIRED,
|
||||||
WIRELESS,
|
WIRELESS,
|
||||||
DOCKED
|
DOCKED,
|
||||||
|
NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent createIntentForLongLifeTest(Boolean hasLongLife) {
|
private static Intent createIntentForLongLifeTest(Boolean hasLongLife) {
|
||||||
return new Intent(Intent.ACTION_BATTERY_CHANGED)
|
return new Intent(Intent.ACTION_BATTERY_CHANGED)
|
||||||
.putExtra(
|
.putExtra(
|
||||||
BatteryManager.EXTRA_CHARGING_STATUS,
|
BatteryManager.EXTRA_CHARGING_STATUS,
|
||||||
@@ -844,16 +933,33 @@ public class BatteryInfoTest {
|
|||||||
: BatteryManager.CHARGING_POLICY_DEFAULT);
|
: BatteryManager.CHARGING_POLICY_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent createIntentForGetBatteryInfoTest(
|
private static Intent createIntentForGetBatteryInfoTest(
|
||||||
ChargingType chargingType, ChargingSpeed chargingSpeed, int batteryLevel) {
|
ChargingType chargingType, ChargingSpeed chargingSpeed, int batteryLevel) {
|
||||||
|
return createIntentForGetBatteryInfoTest(
|
||||||
|
chargingType,
|
||||||
|
chargingSpeed,
|
||||||
|
batteryLevel,
|
||||||
|
BatteryManager.BATTERY_STATUS_CHARGING,
|
||||||
|
/* isLonglife= */ false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Intent createIntentForGetBatteryInfoTest(
|
||||||
|
ChargingType chargingType,
|
||||||
|
ChargingSpeed chargingSpeed,
|
||||||
|
int batteryLevel,
|
||||||
|
int chargingStatus,
|
||||||
|
boolean isLonglife) {
|
||||||
return createBatteryIntent(
|
return createBatteryIntent(
|
||||||
CHARGING_TYPE_MAP.get(chargingType),
|
CHARGING_TYPE_MAP.get(chargingType), batteryLevel, chargingStatus)
|
||||||
batteryLevel,
|
|
||||||
BatteryManager.BATTERY_STATUS_CHARGING)
|
|
||||||
.putExtra(
|
.putExtra(
|
||||||
BatteryManager.EXTRA_MAX_CHARGING_CURRENT,
|
BatteryManager.EXTRA_MAX_CHARGING_CURRENT,
|
||||||
CHARGING_SPEED_MAP.get(chargingSpeed))
|
CHARGING_SPEED_MAP.get(chargingSpeed))
|
||||||
.putExtra(BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE, 5000000);
|
.putExtra(BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE, 5000000)
|
||||||
|
.putExtra(
|
||||||
|
BatteryManager.EXTRA_CHARGING_STATUS,
|
||||||
|
isLonglife
|
||||||
|
? BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE
|
||||||
|
: BatteryManager.CHARGING_POLICY_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareTestGetBatteryInfoEnvironment(
|
private void prepareTestGetBatteryInfoEnvironment(
|
||||||
|
Reference in New Issue
Block a user