Merge "Enter quick doze with non-wakeup alarm." into qt-qpr1-dev

am: 795ef47130

Change-Id: I0c45525e4d7ff55de632b8d98a4e8aa993ea86d6
This commit is contained in:
Kweku Adams
2019-09-17 17:58:41 -07:00
committed by android-build-merger

View File

@@ -2737,7 +2737,9 @@ public class DeviceIdleController extends SystemService
resetIdleManagementLocked(); resetIdleManagementLocked();
// Wait a small amount of time in case something (eg: background service from // Wait a small amount of time in case something (eg: background service from
// recently closed app) needs to finish running. // recently closed app) needs to finish running.
scheduleAlarmLocked(mConstants.QUICK_DOZE_DELAY_TIMEOUT, false); // Use a non-wakeup alarm for going into quick doze in case an AlarmClock alarm
// is scheduled soon. The non-wakeup alarm will be delayed by at most 2 minutes.
scheduleAlarmLocked(mConstants.QUICK_DOZE_DELAY_TIMEOUT, false, false);
EventLogTags.writeDeviceIdle(mState, "no activity"); EventLogTags.writeDeviceIdle(mState, "no activity");
} else if (mState == STATE_ACTIVE) { } else if (mState == STATE_ACTIVE) {
mState = STATE_INACTIVE; mState = STATE_INACTIVE;
@@ -3362,6 +3364,10 @@ public class DeviceIdleController extends SystemService
} }
void scheduleAlarmLocked(long delay, boolean idleUntil) { void scheduleAlarmLocked(long delay, boolean idleUntil) {
scheduleAlarmLocked(delay, idleUntil, true);
}
private void scheduleAlarmLocked(long delay, boolean idleUntil, boolean useWakeupAlarm) {
if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + idleUntil + ")"); if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + idleUntil + ")");
if (mUseMotionSensor && mMotionSensor == null if (mUseMotionSensor && mMotionSensor == null
@@ -3377,12 +3383,14 @@ public class DeviceIdleController extends SystemService
// can continue until the user interacts with the device. // can continue until the user interacts with the device.
return; return;
} }
final int alarmType = useWakeupAlarm
? AlarmManager.ELAPSED_REALTIME_WAKEUP : AlarmManager.ELAPSED_REALTIME;
mNextAlarmTime = SystemClock.elapsedRealtime() + delay; mNextAlarmTime = SystemClock.elapsedRealtime() + delay;
if (idleUntil) { if (idleUntil) {
mAlarmManager.setIdleUntil(AlarmManager.ELAPSED_REALTIME_WAKEUP, mAlarmManager.setIdleUntil(alarmType,
mNextAlarmTime, "DeviceIdleController.deep", mDeepAlarmListener, mHandler); mNextAlarmTime, "DeviceIdleController.deep", mDeepAlarmListener, mHandler);
} else { } else {
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, mAlarmManager.set(alarmType,
mNextAlarmTime, "DeviceIdleController.deep", mDeepAlarmListener, mHandler); mNextAlarmTime, "DeviceIdleController.deep", mDeepAlarmListener, mHandler);
} }
} }