summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
authorEric Jeong <ericjeong@google.com>2021-05-20 09:14:55 -0700
committerEric Jeong <ericjeong@google.com>2021-06-30 15:57:58 -0700
commit919b3ad3d8de119d5f09ae4b6deeaa2ca75dd459 (patch)
tree4cf56eff5a0cb553fff70504ff11a0c8b3d38668 /apex
parent50471a76f9b0beca2d8ab2fe8e39592463d40c02 (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.java31
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");