软件平台:Android11
硬件平台:QCS6125
新需求,直接上改动的patch:
首先是Settings相关部分:
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 30dad01749..05e23f3eb4 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -67,8 +67,8 @@
android:key="screen_timeout"
android:title="@string/screen_timeout"
android:summary="@string/summary_placeholder"
- android:entries="@array/screen_timeout_entries"
- android:entryValues="@array/screen_timeout_values"
+ android:entries="@array/dream_timeout_entries"
+ android:entryValues="@array/dream_timeout_values"
settings:keywords="@string/keywords_screen_timeout" />
<Preference
切换到dream_timeout资源,这里边有永不休眠的选项;
然后,修改PhoneWindowManager的部分:
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 1760ae97b57..1058b0e7bdb 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -5013,7 +5013,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (enable) {
if (localLOGV) Log.v(TAG, "setting lockscreen timer");
mHandler.removeCallbacks(mScreenLockTimeout); // remove any pending requests
- mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+ //mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+ if (mLockScreenTimeout != 0) {
+ mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+ }
+
} else {
if (localLOGV) Log.v(TAG, "clearing lockscreen timer");
mHandler.removeCallbacks(mScreenLockTimeout);
最后修改PowerManager部分:
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index dee604a3a5d..9e85b9dfb4b 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -2339,7 +2339,7 @@ public final class PowerManagerService extends SystemService
nextTimeout = -1;
}
- if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+ /*if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
&& (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) == 0) {
nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout,
screenDimDuration);
@@ -2351,6 +2351,20 @@ public final class PowerManagerService extends SystemService
if (mUserActivitySummary != 0 && nextTimeout >= 0) {
scheduleUserInactivityTimeout(nextTimeout);
+ }*/
+ if (mScreenOffTimeoutSetting != 0) {
+ if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+ && (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) == 0) {
+ nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout,screenDimDuration);
+ }
+ if (nextProfileTimeout > 0) {
+ nextTimeout = Math.min(nextTimeout, nextProfileTimeout);
+ }
+ if (mUserActivitySummary != 0 && nextTimeout >= 0) {
+ scheduleUserInactivityTimeout(nextTimeout);
+ }
+ } else {
+ mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
}
} else {
mUserActivitySummary = 0;
完成、Mark。