【问题标题】:Tell when Android device is in sleep mode告知 Android 设备何时处于睡眠模式
【发布时间】:2013-07-09 09:02:35
【问题描述】:

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

【问题讨论】:

标签: android sleep


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您可以使用信息量很大的 dumpsys 命令进行查找。

        这是一个单行 adb 命令:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多