设置 Android 系统不休眠、不息屏的方法有很多,这里讲解 Setting -> Display -> Screen Timeout 中添加 Never Sleep 选项 这一种,可以通过设置菜单进行设置。
1. packages/apps/Settings/res/values-zh-rCN/arrays.xml 添加 screen_timeout_entries
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -37,6 +37,7 @@
<item msgid="7489864775127957179">"5 分钟"</item>
<item msgid="2314124409517439288">"10 分钟"</item>
<item msgid="6864027152847611413">"30 分钟"</item>
+ <item msgid="1781492122915870416">"永不休眠"</item>
</string-array>
<string-array name="dream_timeout_entries">
<item msgid="3149294732238283185">"永不"</item>
2. packages/apps/Settings/res/values/arrays.xml 添加 screen_timeout_entries、screen_timeout_values
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -48,6 +48,7 @@
<item>5 minutes</item>
<item>10 minutes</item>
<item>30 minutes</item>
+ <item>Never</item>
</string-array>
<!-- Do not translate. -->
@@ -66,6 +67,8 @@
<item>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
+ <!-- Do not translate. -->
+ <item>2147483647</item>
</string-array>
<!-- Display settings. The delay in inactivity before the dream is shown. These are shown in a list dialog. -->
PS: 尝试过 -1 会报错,所以使用 2147483647。
3. packages/apps/Settings/src/com/android/settings/display/TimeoutPreferenceController.java
--- a/src/com/android/settings/display/TimeoutPreferenceController.java
+++ b/src/com/android/settings/display/TimeoutPreferenceController.java
@@ -88,8 +88,10 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
try {
- int value = Integer.parseInt((String) newValue);
- Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value);
+ long value = Integer.parseInt((String) newValue);
+ Settings.System.putLong(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value);
updateTimeoutPreferenceDescription((TimeoutListPreference) preference, value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
@@ -123,9 +125,15 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
} else {
final CharSequence timeoutDescription = getTimeoutDescription(
currentTimeout, entries, values);
- summary = timeoutDescription == null
+ if(currentTimeout == 2147483647){
+ summary = timeoutDescription.toString();
+ } else {
+ summary = timeoutDescription == null
? ""
: mContext.getString(R.string.screen_timeout_summary, timeoutDescription);
+ }
}
preference.setSummary(summary);
}
Android P/Q 上验证OK。