告诉Android设备何时处于睡眠模式



有没有办法判断Android设备何时处于睡眠模式?在测试我的应用程序时,我按下电源按钮关闭屏幕,需要等待睡眠模式激活。然后,我使用谷歌云消息(GCM)向我的设备发送消息,然后在消息到达后播放声音和通知。但是,如果我在睡眠模式激活之前发送此消息,那么我不确定它是因为它还活着还是因为GCM广播接收器启动了我的服务程序才收到消息。

您可以使用android.intent.action.SCREEN_OFF意向来确定屏幕何时关闭,但据我所知,没有意向来确定设备是否处于睡眠模式。

没有特定的方法可以知道设备是否处于睡眠状态。但考虑到在睡眠模式下,设备应该以最小的频率运行,并且cpu消耗应该最小,我们可以做出有根据的猜测。

要查找设备的当前频率,我们可以使用adb shell中的cat /sys/devices/system/cpu/cpu0/cpufreq并查找cpu使用情况,请查看此链接:在Android 中获取内存使用情况

不过,我不确定这些查询本身是否会唤醒设备。

在应用程序级别无法判断,因为当设备处于睡眠状态时,cpu停止工作,并且没有任何代码在执行。

您可以使用信息丰富的dumpsys命令来查找它。

这是一个单行adb命令:

adb shell 'if [ -z $(dumpsys power | grep mScreenOn=true) ]; then echo off; else echo ON; fi'

最新更新