步骤一:修改配置文件
文件路径:/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
说明一下:def_screen_off_timeout这个参数是默认上电后关闭屏幕时间,单位是ms,600000就是10分钟,对应的就是10 minutes, 改为0就是不休眠,在packages/apps/Settings/res/values/arrays.xml文件中有一一对应的关系
<integer name="def_screen_off_timeout">600000</integer>修改为:
<integer name="def_screen_off_timeout">0</integer>
步骤二:检查配置选项
文件路径:/packages/apps/Settings/res/values/arrays.xml
如下所示,当我们将步骤一中的def_screen_off_timeout设置为0时,对应的是screen_timeout_values下的值,最后对应的就是screen_timeout_entries下的never,意思就是永不休眠
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
<string-array name="screen_timeout_entries">
<item>15 seconds</item>
<item>30 seconds</item>
<item>1 minute</item>
<item>2 minutes</item>
<item>5 minutes</item>
<item>10 minutes</item>
<item>30 minutes</item>
<item>never</item>
</string-array>
<!-- Do not translate. -->
<string-array name="screen_timeout_values" translatable="false">
<!-- Do not translate. -->
<item>15000</item>
<!-- Do not translate. -->
<item>30000</item>
<!-- Do not translate. -->
<item>60000</item>
<!-- Do not translate. -->
<item>120000</item>
<!-- Do not translate. -->
<item>300000</item>
<!-- Do not translate. -->
<item>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
<!-- Do not translate. -->
<item>0</item>
</string-array>
步骤三:代码修改
文件路径:/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
修改getScreenOffTimeoutLocked()函数为:
private int getScreenOffTimeoutLocked(intsleepTimeout) {
int nosleep;
int timeout = mScreenOffTimeoutSetting;
if(isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
timeout = Math.min(timeout,mMaximumScreenOffTimeoutFromDeviceAdmin);
}
if(mUserActivityTimeoutOverrideFromWindowManager >= 0) {
timeout = (int)Math.min(timeout,mUserActivityTimeoutOverrideFromWindowManager);
}
if (sleepTimeout >= 0) {
timeout = Math.min(timeout,sleepTimeout);
}
nosleep = mScreenOffTimeoutSetting;
if(nosleep < 0)
{
nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin;
return Math.max(nosleep,mMaximumScreenOffTimeoutFromDeviceAdmin);
}
return Math.max(timeout,mMinimumScreenOffTimeoutConfig);
}
参考:https://www.cnblogs.com/zxouxuewei/p/8127858.html