summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-07-01 22:24:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-07-01 22:24:34 +0000
commite1f4e0f0eb81a28fdc289569bde022132bb7f1f4 (patch)
tree09a5fd4c263ddba4f60177f1219c6760e5b72e72 /apex
parentf45161efa1a9722c2a13ddecb2ea4f57f33ceac6 (diff)
parent919b3ad3d8de119d5f09ae4b6deeaa2ca75dd459 (diff)
Merge "Change the logic to check car idleness" into sc-dev
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");