让 Android 进入睡眠状态以进行测试

Posted

技术标签:

【中文标题】让 Android 进入睡眠状态以进行测试【英文标题】:Put Android to sleep for testing 【发布时间】:2017-06-23 23:17:57 【问题描述】:

我正在创建一个闹钟应用程序,目前在处理唤醒锁(或者可能是其他问题)时遇到问题,以便在手机处于睡眠状态时使闹钟正常工作。但是,我的问题实际上不是关于唤醒锁,而是关于如何让手机进入睡眠状态,以便我可以测试我想在我的闹钟应用程序上实现的各种选项。目前我必须等待手机进入睡眠状态才能测试我的代码。那么有没有办法以编程方式让手机进入深度睡眠?

【问题讨论】:

【参考方案1】:

我在开发工作期间遇到了同样的问题。 android 文档不是很有用——使用 adb 切换到打盹模式(深度睡眠):

adb shell dumpsys deviceidle force-idle

同样有用,使用:

adb shell dumpsys deviceidle step

adb shell dumpsys deviceidle unforce

回到“正常”模式。简介:

adb shell dumpsys -l  #(lower case "L") list subsystems (deviceidle is one)

然后:

adb shell dumpsys deviceidle -h  #parameters with brief description

此外,adb 需要访问您的设备(或模拟器)才能获取此信息。祝你好运!

【讨论】:

看起来你找到了!但是你把命令行放在哪里?我在 android 中看不到 ARGs 行! 嗨@Phil,adb 进入您的调试计算机终端。所以,如果你安装了 adb(它带有 Android SDK,检查路径,它可能不在你的搜索路径中)和一个通过 USB 连接的启用调试的手机,那么你应该没问题(它默认为唯一的设备,如果只有一个)。 adb 操作与调试会话并行发生。更多选项:尝试 adb -h 以获得更多详细信息。这能回答你的问题吗? 但屏幕显示仍在。 我这样做了,但什么也没发生,甚至屏幕都没掉……我怎么知道它真的有效【参考方案2】:

您可以按照以下步骤测试打盹模式/深度睡眠模式:

    使用 Android 6.0 配置硬件设备或虚拟设备 (API 级别 23)或更高的系统映像。 将设备连接到您的开发机器并安装您的应用。 运行您的应用并使其保持活动状态。

    通过运行以下命令强制系统进入空闲模式:

    $ adb shell dumpsys deviceidle force-idle

    准备就绪后,通过运行以下命令退出空闲模式:

    $ adb shell dumpsys deviceidle unforce

    在重新激活设备后观察应用的行为。

【讨论】:

5. adb shell dumpsys deviceidle unforce --->我收到“Unknown command: unforce”错误 我收到了 Android 模拟器的Unable to go deep idle; not enabled。如何启用它? @JustAMartin 要启用深度空闲,您可以发出命令adb shell dumpsys deviceidle enable all

以上是关于让 Android 进入睡眠状态以进行测试的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 google colab 让 Windows 10 笔记本电脑进入睡眠状态?

如何忽略 SIGKILL 或强制进程进入“D”睡眠状态?

手机进入睡眠状态时不播放自定义通知声音

如何防止 android 设备进入睡眠状态(通过 adb 命令外壳)

当 iPhone/Android 进入睡眠状态时,JavaScript 执行(settimeout 等)会发生啥?

如何防止 Android 设备从 Qt 应用程序进入睡眠状态