Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 258c8af1 authored by Yifan Hong's avatar Yifan Hong
Browse files

Shutdown device gracefully when net discharging

Instead of checking the presence of power supplies, check
battery status to determine whether it should
shutdown. In detail, shutdown if

battery level == 0 && status != charging

Change-Id: Ie3d93d305e40f2f45d60538e7831f00be0380544
Fixes: 115715604
Test: boots
parent 96cf4533
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -356,10 +356,27 @@ public final class BatteryService extends SystemService {
                && (oldPlugged || mLastBatteryLevel > mLowBatteryWarningLevel);
    }

    private boolean shouldShutdownLocked() {
        if (mHealthInfo.batteryLevel > 0) {
            return false;
        }

        // Battery-less devices should not shutdown.
        if (!mHealthInfo.batteryPresent) {
            return false;
        }

        // If battery state is not CHARGING, shutdown.
        // - If battery present and state == unknown, this is an unexpected error state.
        // - If level <= 0 and state == full, this is also an unexpected state
        // - All other states (NOT_CHARGING, DISCHARGING) means it is not charging.
        return mHealthInfo.batteryStatus != BatteryManager.BATTERY_STATUS_CHARGING;
    }

    private void shutdownIfNoPowerLocked() {
        // shut down gracefully if our battery is critically low and we are not powered.
        // wait until the system has booted before attempting to display the shutdown dialog.
        if (mHealthInfo.batteryLevel == 0 && !isPoweredLocked(BatteryManager.BATTERY_PLUGGED_ANY)) {
        if (shouldShutdownLocked()) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {