环境:

android7.1.2

msm8953

 

需求描述:

系统默认开启定时开关机功能,在每周二和每周五的凌晨1:58关机,2:00开机。

经过阅读源码发现,定时开关机是通过操作timerswitch.db数据库来完成的。

对应源码位置:

1、./vendor/qcom/proprietary/qrdplus/Extension/apps/TimerSwitchSettings/src/com/android/timerswitch/provider/TimerSwitchDatabaseHelper.java

分析:

DEFAULT_SWITCH_1 = "(7, 0, 127, 1, 0);"; 表示开机的时间设置
DEFAULT_SWITCH_2 = "(23, 0, 127, 1, 0);";表示关机的时间设置

括号中的参数解读:

第一个数据7和23分别表示24小时制的早上7点和晚上23点

第二个数据0表示分钟

第三个参数127对应十六进制0x7f 表示周一至周日,计算方式可以参考源码。

第四个参数1表示默认打开定时开关机,如果是0表示默认关闭。

第五个参数目前还没有搞明白是什么意义

关于第三个参数如果不知道怎么计算的话可以按照以下步骤获取:

思路是:首先在手机上选择定时开关机的日期,然后查询数据库中的数值,将得到的数值再固定到源码中。

步骤如下:

1、打开手机的设置,找到定时开关机选项

2、选中开关机的按钮为打开状态

3、选择周二和周五,开机时间选择凌晨2点,关机时间选择凌晨1点58分

4、adb shell 

5、进入

cd data/data/com.android.timerswitch/databases/

6、ls 可以看到有以下两个文件

7、使用sqlite3命令查询数据库中的数据

sqlite3 timerswitch.db

8、.table查看数据库中的表

9、查询switch_templates表中的数据

select * from switch_templates;

查到的结果如下:(其中18就表示周二和周五计算出来的数值)

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐