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

问题描述 投票:0回答:5

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

android sleep
5个回答
1
投票

您可以使用

android.intent.action.SCREEN_OFF
Intent 找出屏幕何时关闭,但据我所知,没有 Intent 可以确定地找出设备是否处于睡眠模式。


1
投票

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

要查找设备的当前频率,我们可以使用 adb shell 中的

cat /sys/devices/system/cpu/cpu0/cpufreq
并查找 cpu 使用情况,请查看此链接:获取 Android 中的内存使用情况

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


0
投票

您无法在应用程序级别分辨,因为当设备处于睡眠状态时,CPU 停止工作并且您的任何代码都不会执行。


0
投票

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

这是一个单行 adb 命令:

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


0
投票

在我的 Chromecast HD 上,我可以做

dumpsys power | grep mWakefulness

它应该显示

mWakefulness=Asleep

mWakefulness=Awake
© www.soinside.com 2019 - 2024. All rights reserved.