这个有两个方式:
一种是直接使用api修改;
另一种是修改系统数据库;
调用api需要添加权限,而修改数据库不用。
1、api设置
Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_OFF_TIMEOUT,15*1000);
权限:
时长是单位是毫秒
这个并不能设置永久休眠,PowerManagerService的源码的getScreenOffTimeoutLocked方法最后return那里的max方法,说明最短只能10秒
private static final int MINIMUM_SCREEN_OFF_TIMEOUT = 10 * 1000;
private int getScreenOffTimeoutLocked() {
int timeout = mScreenOffTimeoutSetting;
if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
}
if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {
timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);
}
return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);
}
至于设置不休眠你可以这么写代码:
Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_OFF_TIMEOUT,Integer.MAX_VALUE);貌似大于某个值,系统设置(手机)里面会休眠时长会自动显示为“永久”
2、直接修改系统数据库
路径在/data/data/com.android.providers.settings/databases/settings.db
里面有5,6个表,其中一个表是叫system,其实api修改的就是这个表的screen_off_timeout元组(一行)
system表有三个度,分别是:_id,name,value
所以呢,自己操作数据库,使用语句:
UPDATE system SET value = 'you_time' WHERE name = 'screen_off_timeout' ;
参考博客:
Android休眠设置时间
android 4.2以上版本永不休眠