Merge "Change the logic to check car idleness" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e1f4e0f0eb
@@ -30,6 +30,12 @@ import com.android.server.job.StateControllerProto;
|
|||||||
|
|
||||||
import java.io.PrintWriter;
|
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 {
|
public final class CarIdlenessTracker extends BroadcastReceiver implements IdlenessTracker {
|
||||||
private static final String TAG = "JobScheduler.CarIdlenessTracker";
|
private static final String TAG = "JobScheduler.CarIdlenessTracker";
|
||||||
private static final boolean DEBUG = JobSchedulerService.DEBUG
|
private static final boolean DEBUG = JobSchedulerService.DEBUG
|
||||||
@@ -48,6 +54,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
private boolean mIdle;
|
private boolean mIdle;
|
||||||
private boolean mGarageModeOn;
|
private boolean mGarageModeOn;
|
||||||
private boolean mForced;
|
private boolean mForced;
|
||||||
|
private boolean mScreenOn;
|
||||||
private IdlenessListener mIdleListener;
|
private IdlenessListener mIdleListener;
|
||||||
|
|
||||||
public CarIdlenessTracker() {
|
public CarIdlenessTracker() {
|
||||||
@@ -56,6 +63,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
mIdle = false;
|
mIdle = false;
|
||||||
mGarageModeOn = false;
|
mGarageModeOn = false;
|
||||||
mForced = false;
|
mForced = false;
|
||||||
|
mScreenOn = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -71,6 +79,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
|
|
||||||
// Screen state
|
// Screen state
|
||||||
filter.addAction(Intent.ACTION_SCREEN_ON);
|
filter.addAction(Intent.ACTION_SCREEN_ON);
|
||||||
|
filter.addAction(Intent.ACTION_SCREEN_OFF);
|
||||||
|
|
||||||
// State of GarageMode
|
// State of GarageMode
|
||||||
filter.addAction(ACTION_GARAGE_MODE_ON);
|
filter.addAction(ACTION_GARAGE_MODE_ON);
|
||||||
@@ -88,6 +97,8 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
public void dump(PrintWriter pw) {
|
public void dump(PrintWriter pw) {
|
||||||
pw.print(" mIdle: "); pw.println(mIdle);
|
pw.print(" mIdle: "); pw.println(mIdle);
|
||||||
pw.print(" mGarageModeOn: "); pw.println(mGarageModeOn);
|
pw.print(" mGarageModeOn: "); pw.println(mGarageModeOn);
|
||||||
|
pw.print(" mForced: "); pw.println(mForced);
|
||||||
|
pw.print(" mScreenOn: "); pw.println(mScreenOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -121,6 +132,9 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
} else if (action.equals(Intent.ACTION_SCREEN_ON)) {
|
} else if (action.equals(Intent.ACTION_SCREEN_ON)) {
|
||||||
logIfDebug("Screen is on...");
|
logIfDebug("Screen is on...");
|
||||||
handleScreenOn();
|
handleScreenOn();
|
||||||
|
} else if (action.equals(intent.ACTION_SCREEN_OFF)) {
|
||||||
|
logIfDebug("Screen is off...");
|
||||||
|
mScreenOn = false;
|
||||||
} else if (action.equals(ACTION_GARAGE_MODE_ON)) {
|
} else if (action.equals(ACTION_GARAGE_MODE_ON)) {
|
||||||
logIfDebug("GarageMode is on...");
|
logIfDebug("GarageMode is on...");
|
||||||
mGarageModeOn = true;
|
mGarageModeOn = true;
|
||||||
@@ -132,10 +146,10 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
} else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
|
} else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
|
||||||
if (!mGarageModeOn) {
|
if (!mGarageModeOn) {
|
||||||
logIfDebug("Idle trigger fired...");
|
logIfDebug("Idle trigger fired...");
|
||||||
triggerIdlenessOnce();
|
triggerIdleness();
|
||||||
} else {
|
} else {
|
||||||
logIfDebug("TRIGGER_IDLE received but not changing state; idle="
|
logIfDebug("TRIGGER_IDLE received but not changing state; mIdle="
|
||||||
+ mIdle + " screen=" + mGarageModeOn);
|
+ 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
|
// This is simply triggering idleness once until some constraint will switch it back off
|
||||||
if (mIdle) {
|
if (mIdle) {
|
||||||
// Already in idle state. Nothing to do
|
// Already in idle state. Nothing to do
|
||||||
logIfDebug("Device is already idle");
|
logIfDebug("Device is already idle");
|
||||||
} else {
|
} else if (!mScreenOn) {
|
||||||
// Going idle once
|
// Going idle once
|
||||||
logIfDebug("Device is going idle once");
|
logIfDebug("Device is going idle");
|
||||||
mIdle = true;
|
mIdle = true;
|
||||||
mIdleListener.reportNewIdleState(mIdle);
|
mIdleListener.reportNewIdleState(mIdle);
|
||||||
|
} else {
|
||||||
|
logIfDebug("TRIGGER_IDLE received but not changing state: mIdle = " + mIdle
|
||||||
|
+ ", mScreenOn = " + mScreenOn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleScreenOn() {
|
private void handleScreenOn() {
|
||||||
|
mScreenOn = true;
|
||||||
if (mForced || mGarageModeOn) {
|
if (mForced || mGarageModeOn) {
|
||||||
// Even though screen is on, the device remains idle
|
// Even though screen is on, the device remains idle
|
||||||
logIfDebug("Screen is on, but device cannot exit idle");
|
logIfDebug("Screen is on, but device cannot exit idle");
|
||||||
@@ -179,6 +197,7 @@ public final class CarIdlenessTracker extends BroadcastReceiver implements Idlen
|
|||||||
// Exiting idle
|
// Exiting idle
|
||||||
logIfDebug("Device is exiting idle");
|
logIfDebug("Device is exiting idle");
|
||||||
mIdle = false;
|
mIdle = false;
|
||||||
|
mIdleListener.reportNewIdleState(mIdle);
|
||||||
} else {
|
} else {
|
||||||
// Already in non-idle state. Nothing to do
|
// Already in non-idle state. Nothing to do
|
||||||
logIfDebug("Device is already non-idle");
|
logIfDebug("Device is already non-idle");
|
||||||
|
|||||||
Reference in New Issue
Block a user