如何通过ADB为Android 9设备配置每日定时开关机?
Android 9设备ADB批量配置定时开关机问题
背景
需为运行Android 9的设备配置每日自动定时开关机(示例:9:00开机、17:00关机),通过ADB实现自动化操作。设备设置路径为Settings > Accessibility > Scheduled Power on and off,所有修改(手动或ADB方式)需点击底部的Save Settings按钮确认才生效。点击该按钮会生成power_way和machine_time_secs两个仅在功能启用时出现的变量。
已尝试的ADB命令:
adb shell settings put system timer_power_switch_settings 1 adb shell settings put system close_machine_time_hour 09 adb shell settings put system close_machine_time_mins 00 adb shell settings put system open_machine_time_hour 17 adb shell settings put system open_machine_time_mins 00 adb shell settings put system power_off_time 9:00:16 adb shell settings put system power_on_time 17:00:16 adb shell settings put system power_off_cycle_mode 0-1-2-3-4-5-6- adb shell settings put system power_on_cycle_mode 0-1-2-3-4-5-6-
遇到的问题:命令存在重复设置时间的情况,ADB修改后界面有反馈,但必须手动点击保存按钮才生效,批量操作30+设备时效率极低。
问题解答
1. 该定时开关机功能是Android原生功能还是定制ROM特性?
Android 9原生系统没有内置定时开关机功能,此功能属于定制ROM特性(如小米、华为等国内厂商的定制系统会额外添加该功能)。原生Android仅提供定时重启的基础接口,定时开关机是厂商基于系统框架扩展的功能,不同厂商的实现逻辑和参数会存在差异。
2. 能否无需模拟屏幕点击来触发保存设置,或直接绕过该确认步骤?
可以尝试两种方式:
- 直接写入厂商私有参数:部分厂商的定时开关机设置会同步写入私有系统参数或数据库,可通过
adb shell content query查询设置页面对应的Content Provider,找到保存按钮触发后写入的完整参数(包括power_way和machine_time_secs),直接用settings put或content insert/update命令写入这些参数。 - 发送模拟保存的广播:点击保存按钮时,系统可能会发送特定广播触发设置生效。通过
adb shell logcat监控日志,找到点击保存时的广播动作,再用adb shell am broadcast命令发送该广播,替代手动点击操作。
2.A. 是否有ADB命令可持续监控后台活动,以便点击保存按钮时查看后台操作?
有两种常用方法:
- 监控系统日志:执行
adb shell logcat -v time,手动点击保存按钮后,查看日志中的关键信息(如广播动作、Content Provider操作、参数写入记录)。可添加过滤条件缩小范围,比如adb shell logcat | grep "power"或adb shell logcat | grep "Settings"。 - 监控Activity和参数变化:执行
adb shell dumpsys activity或adb shell dumpsys window,查看点击保存时的Activity跳转、服务启动情况;也可用adb shell dumpsys settings对比保存前后的系统参数变化,找出差异项。
内容的提问来源于stack exchange,提问作者Ross Ferguson
相关产品推荐
相关产品推荐

