Sync the charge time with battery info on settings
Test: atest SettingsTests Bug: 296793655 Change-Id: I407de30589e77ba09916f54f06f4f9c345adf330
This commit is contained in:
@@ -24,6 +24,7 @@ import android.os.BatteryStats.HistoryItem;
|
|||||||
import android.os.BatteryStatsManager;
|
import android.os.BatteryStatsManager;
|
||||||
import android.os.BatteryUsageStats;
|
import android.os.BatteryUsageStats;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.text.format.Formatter;
|
import android.text.format.Formatter;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseIntArray;
|
import android.util.SparseIntArray;
|
||||||
@@ -43,6 +44,7 @@ import com.android.settingslib.utils.StringUtil;
|
|||||||
|
|
||||||
public class BatteryInfo {
|
public class BatteryInfo {
|
||||||
private static final String TAG = "BatteryInfo";
|
private static final String TAG = "BatteryInfo";
|
||||||
|
private static final String GLOBAL_TIME_TO_FULL_MILLIS = "time_to_full_millis";
|
||||||
|
|
||||||
public CharSequence chargeLabel;
|
public CharSequence chargeLabel;
|
||||||
public CharSequence remainingLabel;
|
public CharSequence remainingLabel;
|
||||||
@@ -147,6 +149,12 @@ public class BatteryInfo {
|
|||||||
BatteryInfo.getBatteryInfo(context, callback, /* batteryUsageStats */ null, shortString);
|
BatteryInfo.getBatteryInfo(context, callback, /* batteryUsageStats */ null, shortString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static long getSettingsChargeTimeRemaining(final Context context) {
|
||||||
|
return Settings.Global.getLong(
|
||||||
|
context.getContentResolver(),
|
||||||
|
GLOBAL_TIME_TO_FULL_MILLIS, -1);
|
||||||
|
}
|
||||||
|
|
||||||
public static void getBatteryInfo(final Context context, final Callback callback,
|
public static void getBatteryInfo(final Context context, final Callback callback,
|
||||||
@Nullable final BatteryUsageStats batteryUsageStats,
|
@Nullable final BatteryUsageStats batteryUsageStats,
|
||||||
boolean shortString) {
|
boolean shortString) {
|
||||||
@@ -276,6 +284,13 @@ public class BatteryInfo {
|
|||||||
BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
|
BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
|
||||||
final Resources resources = context.getResources();
|
final Resources resources = context.getResources();
|
||||||
final long chargeTimeMs = stats.getChargeTimeRemainingMs();
|
final long chargeTimeMs = stats.getChargeTimeRemainingMs();
|
||||||
|
if (getSettingsChargeTimeRemaining(context) != chargeTimeMs) {
|
||||||
|
Settings.Global.putLong(
|
||||||
|
context.getContentResolver(),
|
||||||
|
GLOBAL_TIME_TO_FULL_MILLIS,
|
||||||
|
chargeTimeMs);
|
||||||
|
}
|
||||||
|
|
||||||
final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
|
final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
|
||||||
BatteryManager.BATTERY_STATUS_UNKNOWN);
|
BatteryManager.BATTERY_STATUS_UNKNOWN);
|
||||||
info.discharging = false;
|
info.discharging = false;
|
||||||
|
@@ -229,6 +229,37 @@ public class BatteryInfoTest {
|
|||||||
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
|
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetBatteryInfo_getChargeTimeRemaining_updateSettingsGlobal() {
|
||||||
|
doReturn(TEST_CHARGE_TIME_REMAINING)
|
||||||
|
.when(mBatteryUsageStats)
|
||||||
|
.getChargeTimeRemainingMs();
|
||||||
|
|
||||||
|
BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
|
||||||
|
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
|
||||||
|
false /* shortString */);
|
||||||
|
|
||||||
|
assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(
|
||||||
|
TEST_CHARGE_TIME_REMAINING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetBatteryInfo_differentChargeTimeRemaining_updateSettingsGlobal() {
|
||||||
|
doReturn(TEST_CHARGE_TIME_REMAINING)
|
||||||
|
.when(mBatteryUsageStats)
|
||||||
|
.getChargeTimeRemainingMs();
|
||||||
|
final long newTimeToFull = 300L;
|
||||||
|
doReturn(newTimeToFull)
|
||||||
|
.when(mBatteryUsageStats)
|
||||||
|
.getChargeTimeRemainingMs();
|
||||||
|
|
||||||
|
BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
|
||||||
|
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
|
||||||
|
false /* shortString */);
|
||||||
|
|
||||||
|
assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(newTimeToFull);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetBatteryInfo_dockDefenderActive_updateChargeString() {
|
public void testGetBatteryInfo_dockDefenderActive_updateChargeString() {
|
||||||
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
|
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
|
||||||
|
Reference in New Issue
Block a user