Android 获取屏幕是否打开/关闭以及应用程序是否位于后台/前台
我决定在一篇文章中发表两个问题,因为这是一个完全相同的问题Android 获取屏幕是否打开/关闭以及应用程序是否位于后台/前台,android,background,screen,Android,Background,Screen,我决定在一篇文章中发表两个问题,因为这是一个完全相同的问题 我需要知道屏幕何时打开或关闭,以便打开LED。第二个问题是,我需要知道我的应用程序是在后台还是在前台,以便在应用程序处于后台时管理发送有关某个操作的通知。前面也有类似的问题。以下是其中几个的链接: 早些时候,关于Stackoverflow也有类似的问题。以下是其中几个的链接: 通过使用活动的onWindowFocusChanged()回调,您可以知道自己是否在前台;看 您还可以创建广播接收器来捕获屏幕打开和屏幕关闭事件。例如
我需要知道屏幕何时打开或关闭,以便打开LED。第二个问题是,我需要知道我的应用程序是在后台还是在前台,以便在应用程序处于后台时管理发送有关某个操作的通知。前面也有类似的问题。以下是其中几个的链接:
早些时候,关于Stackoverflow也有类似的问题。以下是其中几个的链接:
通过使用活动的onWindowFocusChanged()回调,您可以知道自己是否在前台;看
您还可以创建广播接收器来捕获屏幕打开和屏幕关闭事件。例如。通过使用活动的onWindowFocusChanged()回调,您可以知道自己是否在前台;看
您还可以创建广播接收器来捕获屏幕打开和屏幕关闭事件。是一个示例。添加屏幕开/关检查的答案:
// If you use API20 or more:
DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
for (Display display : dm.getDisplays()) {
if (display.getState() != Display.STATE_OFF) {
return true;
}
}
return false;
// If you use less than API20:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
if (powerManager.isScreenOn()){ return true; }
请注意,Display.getState()
还可以返回STATE\u DOZE
和STATE\u DOZE\u SUSPEND
,这意味着屏幕以特殊方式打开。有关Display.getState()
及其返回值的更多信息,请参见此处:
另外请注意,尽管官方文档建议使用
isInteractive()
而不是isScreenOn()
,但如果您确实想知道屏幕的状态,请使用Display.getState()
是一个更好的选择,因为“特殊”条件会在设备不交互时设置屏幕打开。添加屏幕打开/关闭检查的答案:
// If you use API20 or more:
DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
for (Display display : dm.getDisplays()) {
if (display.getState() != Display.STATE_OFF) {
return true;
}
}
return false;
// If you use less than API20:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
if (powerManager.isScreenOn()){ return true; }
请注意,Display.getState()
还可以返回STATE\u DOZE
和STATE\u DOZE\u SUSPEND
,这意味着屏幕以特殊方式打开。有关Display.getState()
及其返回值的更多信息,请参见此处:
另外请注意,尽管官方文档建议使用
isInteractive()
而不是isScreenOn()
,但如果您确实想知道屏幕的状态,请使用Display.getState()
是一个更好的选择,因为“特殊”条件会在设备不交互时打开屏幕。官方文档说请特别注意,设备在做梦时仍然被认为是交互的。
。我发现更准确,更准确updated@Jaydeep嗯,很有趣。将更新答案。非常感谢。如何在后台使用getState()方法假设显示器关闭时需要在后台进行一些工作。(操作\屏幕\关闭处理是否与用户交互,但不与显示器打开/关闭)。有什么想法吗?感谢官方文档中提到的,请特别注意,该设备在做梦时仍然被认为是交互式的。我发现更准确,更准确updated@Jaydeep嗯,很有趣。将更新答案。非常感谢。如何在后台使用getState()方法假设显示器关闭时需要在后台进行一些工作。(操作\屏幕\关闭处理是否与用户交互,但不与显示器打开/关闭)。有什么想法吗?谢谢