安卓系统设置
设置锁屏/休眠时间
有两种方法可以实现,第一种方法是使用安卓系统api,实现在所安装的所有设备上都修改锁屏时间,另一种方法是修改安卓系统数据库,但是只能在所修改的设备上修改锁屏时间。
(查看的是安卓Lollipop 5.1.1_r6版本源码)在安卓源码中,在路径/framework/base/services/core/java/com/android/server/power/PowerManagerService.java文件中,设置系统的息屏时间。系统有默认的最短的息屏时间是在/framework/base/core/res/res/values/config.xml文件中,在5.1.1_r6版本中,这个值是10s。
<integer name="config_minimumScreenOffTimeout">10000</integer>
//使用该变量定义最短的息屏时间;
private int mMinimumScreenOffTimeoutConfig;
//从xml文件中读取设置的默认息屏时间;
mMinimumScreenOffTimeoutConfig = resources.getInteger(com.android.internal.R.integer.config_minimumScreenOffTimeout);
private int getScreenOffTimeoutLocked(int sleepTimeout) {
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);
}
return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
}
使用系统api设置锁屏时间
使用下面的一行代码就可以设置:
//设置30s后息屏;
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_OFF_TIMEOUT,30 * 1000);
但是需要申请系统权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
要是设置屏幕常亮不息屏,没有一个值代表永久不息屏,但是可以使用Integer.MAX_VALUE这个值:
Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_OFF_TIMEOUT,Integer.MAX_VALUE);
修改系统数据库设置锁屏时间
修改系统数据库,需要进入到adb shell目录下。路径在data/data/com.android.providers.settings/databases/settings.db,在adb shell中,使用sqlite3 settings.db命令查看settings.db中的表,有一个system表,该表有三个度,分别是_id,name,value。使用select * from system;命令可以查看system表中的数据,其中screen_off_timeout就是息屏时间这个值的名称。
使用下面这句sql语句,就可以设置息屏时间:
UPDATE system SET value = 'xxx(如写20000,代表无操作之后20s后会息屏)' WHERE name = 'screen_off_timeout';
-
-
-
-
-
-
-
-
-
-
-------------------last line for now------------------