diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java index 08e70a97e0ca4..6ae5e904e4c7d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java @@ -105,6 +105,9 @@ public interface BatteryController extends DemoMode, Dumpable, default void onExtremeBatterySaverChanged(boolean isExtreme) { } + + default void onWirelessChargingChanged(boolean isWirlessCharging) { + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 8c67072a15d94..da9aa97bab391 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -77,7 +77,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC private boolean mCharged; protected boolean mPowerSave; private boolean mAodPowerSave; - protected boolean mWirelessCharging; + private boolean mWirelessCharging; private boolean mTestMode = false; @VisibleForTesting boolean mHasReceivedBattery = false; @@ -155,6 +155,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); cb.onPowerSaveChanged(mPowerSave); cb.onBatteryUnknownStateChanged(mStateUnknown); + cb.onWirelessChargingChanged(mWirelessCharging); } @Override @@ -179,8 +180,12 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC BatteryManager.BATTERY_STATUS_UNKNOWN); mCharged = status == BatteryManager.BATTERY_STATUS_FULL; mCharging = mCharged || status == BatteryManager.BATTERY_STATUS_CHARGING; - mWirelessCharging = mCharging && intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) - == BatteryManager.BATTERY_PLUGGED_WIRELESS; + if (mWirelessCharging != (mCharging + && intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) + == BatteryManager.BATTERY_PLUGGED_WIRELESS)) { + mWirelessCharging = !mWirelessCharging; + fireWirelessChargingChanged(); + } boolean present = intent.getBooleanExtra(EXTRA_PRESENT, true); boolean unknown = !present; @@ -227,6 +232,13 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC } } + private void fireWirelessChargingChanged() { + synchronized (mChangeCallbacks) { + mChangeCallbacks.forEach(batteryStateChangeCallback -> + batteryStateChangeCallback.onWirelessChargingChanged(mWirelessCharging)); + } + } + @Override public boolean isPluggedIn() { return mPluggedIn;