首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取屏幕是否打开/关闭以及应用程序是否在后台/前台

问获取屏幕是否打开/关闭以及应用程序是否在后台/前台
EN

Stack Overflow用户
提问于 2011-06-10 19:16:01
回答 3查看 9.3K关注 0票数 1

我决定在一篇文章中发布两个问题,因为这是完全相同的问题。

我需要知道屏幕何时打开或关闭,以便我可以打开LED。第二个我需要知道我的应用程序是在后台还是在前台,以便在应用程序在后台时发送通知。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-10 19:19:56

Stack Overflow用户

发布于 2013-06-28 00:41:57

添加屏幕开/关检查的答案:

代码语言:javascript
复制
// 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_DOZE和STATE_DOZE_SUSPEND,这意味着屏幕是以一种特殊的方式打开的。有关Display.getState()及其返回值的更多信息,请单击此处:http://developer.android.com/reference/android/view/Display.html#getState()

还要注意的是,尽管官方文档建议使用isInteractive()而不是isScreenOn(),但如果你真的想知道屏幕的状态,Display.getState()是一个更好的选择,因为它有“特殊”条件,可以在设备不交互的情况下设置屏幕。

票数 11
EN

Stack Overflow用户

发布于 2011-06-10 19:20:18

通过使用活动的onWindowFocusChanged()回调,您可以知道自己是否在前台;请参见http://developer.android.com/reference/android/view/Window.Callback.html

您还可以创建一个广播接收器来捕获SCREEN_ON和SCREEN_OFF事件。Here就是一个例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6305563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档