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

告诉Android设备何时处于睡眠模式,android,sleep,Android,Sleep,有没有办法判断Android设备何时处于睡眠模式?在测试我的应用程序时,我按下电源按钮关闭屏幕,需要等待睡眠模式激活。然后,我使用谷歌云消息(GCM)向我的设备发送消息,然后在消息到达时播放声音和通知。但如果我在睡眠模式激活前发送此消息,然后,我不确定它是否收到了消息,因为它仍然处于活动状态,还是因为我的服务程序是由GCM广播接收器启动的。您可以使用android.intent.action.screen\u offintent来确定屏幕何时关闭的,但就我所知,不确定设备是否处于睡眠模式知道。没

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

您可以使用android.intent.action.screen\u offintent来确定屏幕何时关闭的,但就我所知,不确定设备是否处于睡眠模式知道。

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

要查找设备的当前频率,我们可以使用adb shell中的
cat/sys/devices/system/cpu/cpu0/cpufreq
,要查找cpu使用情况,请查看以下链接:


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

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

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

下面是一个单行adb命令:

adb shell'如果[-z$(dumpsys power | grep mScreenOn=true)];然后回声消失;否则就回响;fi'

这可能会有帮助: