diff options
author | Eric Jeong <ericjeong@google.com> | 2021-05-20 09:14:55 -0700 |
---|---|---|
committer | Eric Jeong <ericjeong@google.com> | 2021-06-30 15:57:58 -0700 |
commit | 919b3ad3d8de119d5f09ae4b6deeaa2ca75dd459 (patch) | |
tree | 4cf56eff5a0cb553fff70504ff11a0c8b3d38668 /apex | |
parent | 50471a76f9b0beca2d8ab2fe8e39592463d40c02 (diff) |
Change the logic to check car idleness
- Following the change of device idleness checking, car idleness
tracker considers screen on to determine idleness.
- The condition to get idle in automotive is 1) garage mode is started,
or 2) screen is off and idle is triggered.
- If idleness is forced or garage mode is running, it is considered idle
by car idleness tracker, regardless of screen on/off.
Bug: 182492612
Test: atest android.jobscheduler.cts.IdleConstraintTest
Change-Id: I15e78157c6b1539086e9b39354e5da51186c6535
Diffstat (limited to 'apex')
-rw-r--r-- | apex/jobscheduler/service/java/com/android/server/job/controllers/idle/CarIdlenessTracker.java | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/CarIdlenessTracker.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/CarIdlenessTracker.java index 1e5b84d55a02..9ada8dc3ef32 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/CarIdlenessTracker.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/CarIdlenessTracker.java @@ -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"); |