首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断设备是否处于休眠状态

如何判断设备是否处于休眠状态
EN

Stack Overflow用户
提问于 2010-11-24 04:52:06
回答 4查看 7.9K关注 0票数 12

这是我的场景。我有一个可以播放背景声音的应用程序。使用BroadcastReceiver,我可以判断显示器何时关闭,然后关闭声音。我还可以判断屏幕是否会重新打开。但是,如果设备处于锁定状态,我不希望启动音频。因此,我等待ACTION_USER_PRESENT意图发出信号。这一切都正常,除了如果用户在关闭屏幕后迅速重新打开屏幕,您将不会获得锁定屏幕或ACTION_USER_PRESENT消息。那么,有没有办法来判断,当屏幕重新打开时,设备是否已锁定,我猜这也意味着是否处于睡眠状态?

EN

回答 4

Stack Overflow用户

发布于 2012-03-07 17:13:27

代码语言:javascript
复制
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn()
票数 12
EN

Stack Overflow用户

发布于 2010-11-24 05:13:44

您可以尝试使用KeyguardManager检查设备是否已锁定。下面是一些代码(我自己还没有试过):

代码语言:javascript
复制
KeyguardManager kgMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean showing = kgMgr.inKeyguardRestrictedInputMode();

祝好运!

票数 10
EN

Stack Overflow用户

发布于 2020-06-08 21:39:41

isKeyguardRestricatedInputMode()的解决方案在当时是正确的,但从那时起就被弃用了。一些与powerManager相关的功能现在也被弃用了。

有一个更新、更准确的解决方案:用于判断设备是否锁定的isKeyguardLocked(),以及用于获取是否为screen is interactive的不同方法;您正在寻找两者的组合。

代码语言:javascript
复制
KeyguardManager appKeyguard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
PowerManager appPowerManager = (PowerManager) getSystemService(Context,POWER_SERVICE);
boolean showing = !appKeyguard.isKeyguardLocked() && appPowerManager.isInteractive();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4260794

复制
相关文章

相似问题

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