Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在代码中检测手机是否处于睡眠模式?_Android - Fatal编程技术网

Android 如何在代码中检测手机是否处于睡眠模式?

Android 如何在代码中检测手机是否处于睡眠模式?,android,Android,有没有办法在代码中检测android手机是否处于睡眠模式(屏幕为黑色)? 我写了一个主屏幕小部件。我不希望小部件在屏幕变黑时更新以节省电池消耗 谢谢。您可以使用AlarmManager触发小部件的刷新。在安排下一个周期时,您可以定义是否唤醒设备(也称为执行实际任务) 您可以将广播接收器与android.intent.action.SCREEN_打开和android.intent.action.SCREEN_关闭的动作过滤器一起使用 小例子: 你的接收人: public class Screen

有没有办法在代码中检测android手机是否处于睡眠模式(屏幕为黑色)? 我写了一个主屏幕小部件。我不希望小部件在屏幕变黑时更新以节省电池消耗


谢谢。

您可以使用AlarmManager触发小部件的刷新。在安排下一个周期时,您可以定义是否唤醒设备(也称为执行实际任务)


您可以将广播接收器与android.intent.action.SCREEN_打开和android.intent.action.SCREEN_关闭的动作过滤器一起使用

小例子:

你的接收人:

 public class ScreenOnOffReceiver extends BroadcastReceiver
 {
     @Override
     public void onReceive(Context context, Intent intent) 
     {
         if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
         {
                      // some code
         }
                 if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
         {
                      // some code
         }
     }
 }
您的舱单:

 <receiver android:name=".ScreenOnOffReceiver">
        <intent-filter>
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.SCREEN_OFF" />
        </intent-filter>
 </receiver>


或者,不要使用
唤醒
警报,坚持使用
setRepeating()
。如果您告诉闹钟不要唤醒手机,它就不会响。这不起作用:很遗憾,您无法在AndroidManifest.xml中注册SCREEN_ON或SCREEN_OFF;您需要在代码中完成这项工作(不确定原因,但我已经测试并确认了这一点)。不幸的是,您需要查看源代码,以查看哪些广播需要通过registerReceiver(BroadcastReceiver,IntentFilter)而不是清单注册您的接收器。+1如果您在粘性服务中注册
SCREEN\u ON
/
SCREEN\u OFF
,您可以非常肯定,即使设备进入睡眠模式,它们也会保持活动状态。特别是,如果您在以下情况下启动此服务……:)
 <receiver android:name=".ScreenOnOffReceiver">
        <intent-filter>
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.SCREEN_OFF" />
        </intent-filter>
 </receiver>