安卓系统设置

设置锁屏/休眠时间

  有两种方法可以实现,第一种方法是使用安卓系统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------------------