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