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

Commit 31f6611f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Change the logic to check car idleness" into sc-dev am: e1f4e0f0 am: 80485deb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15020076

Change-Id: I92c8cb4bd589dbea4078f35b7f1825680a98bf19
parents 79d2e021 80485deb
Loading
Loading
Loading
Loading
+25 −6
Original line number Diff line number Diff line
@@ -30,6 +30,12 @@ import com.android.server.job.StateControllerProto;

import java.io.PrintWriter;

/**
 * CarIdlenessTracker determines that a car is in idle state when 1) garage mode is started, or
 * 2) screen is off and idle maintenance is triggered.
 * If idleness is forced or garage mode is running, the car is considered idle regardless of screen
 * on/off.
 */
public final class CarIdlenessTracker extends BroadcastReceiver implements IdlenessTracker {
    private static final String TAG = "JobScheduler.CarIdlenessTracker";
    private static final boolean DEBUG = JobSchedulerService.DEBUG
@@ -48,6 +54,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
    private boolean mIdle;
    private boolean mGarageModeOn;
    private boolean mForced;
    private boolean mScreenOn;
    private IdlenessListener mIdleListener;

    public CarIdlenessTracker() {
@@ -56,6 +63,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
        mIdle = false;
        mGarageModeOn = false;
        mForced = false;
        mScreenOn = true;
    }

    @Override
@@ -71,6 +79,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen

        // Screen state
        filter.addAction(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);

        // State of GarageMode
        filter.addAction(ACTION_GARAGE_MODE_ON);
@@ -88,6 +97,8 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
    public void dump(PrintWriter pw) {
        pw.print("  mIdle: "); pw.println(mIdle);
        pw.print("  mGarageModeOn: "); pw.println(mGarageModeOn);
        pw.print("  mForced: "); pw.println(mForced);
        pw.print("  mScreenOn: "); pw.println(mScreenOn);
    }

    @Override
@@ -121,6 +132,9 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
        } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
            logIfDebug("Screen is on...");
            handleScreenOn();
        } else if (action.equals(intent.ACTION_SCREEN_OFF)) {
            logIfDebug("Screen is off...");
            mScreenOn = false;
        } else if (action.equals(ACTION_GARAGE_MODE_ON)) {
            logIfDebug("GarageMode is on...");
            mGarageModeOn = true;
@@ -132,10 +146,10 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
        } else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
            if (!mGarageModeOn) {
                logIfDebug("Idle trigger fired...");
                triggerIdlenessOnce();
                triggerIdleness();
            } else {
                logIfDebug("TRIGGER_IDLE received but not changing state; idle="
                        + mIdle + " screen=" + mGarageModeOn);
                logIfDebug("TRIGGER_IDLE received but not changing state; mIdle="
                        + mIdle + " mGarageModeOn=" + mGarageModeOn);
            }
        }
    }
@@ -158,20 +172,24 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
        }
    }

    private void triggerIdlenessOnce() {
    private void triggerIdleness() {
        // This is simply triggering idleness once until some constraint will switch it back off
        if (mIdle) {
            // Already in idle state. Nothing to do
            logIfDebug("Device is already idle");
        } else {
        } else if (!mScreenOn) {
            // Going idle once
            logIfDebug("Device is going idle once");
            logIfDebug("Device is going idle");
            mIdle = true;
            mIdleListener.reportNewIdleState(mIdle);
        } else {
            logIfDebug("TRIGGER_IDLE received but not changing state: mIdle = " + mIdle
                    + ", mScreenOn = " + mScreenOn);
        }
    }

    private void handleScreenOn() {
        mScreenOn = true;
        if (mForced || mGarageModeOn) {
            // Even though screen is on, the device remains idle
            logIfDebug("Screen is on, but device cannot exit idle");
@@ -179,6 +197,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
            // Exiting idle
            logIfDebug("Device is exiting idle");
            mIdle = false;
            mIdleListener.reportNewIdleState(mIdle);
        } else {
            // Already in non-idle state. Nothing to do
            logIfDebug("Device is already non-idle");