检测当应用程序保持屏幕
问题描述:
我正在编写一个Android应用程序,主要是通过状态栏通知与用户通信。但是,我想而不是如果他/他不是真的直接与他们的手机进行交互,麻烦用户。例如,如果用户正在使用导航应用程序或正在观看电影。我认为所有(或大多数)这类应用程序之间的共同点是它们保持屏幕开启。我相信应用程序可以通过使用WakeLock或通过在其活动中指定keepScreenOn参数来保持屏幕开启,但可能有其他方法。检测当应用程序保持屏幕
我想知道,在我要显示通知之前,我可以检查另一个应用程序是否将屏幕保持打开状态,以免打扰用户。我想涵盖所有选项。我可以看到WakeLock有一个isHeld()方法,但会检测另一种方法吗?
谢谢
答
采集屏幕亮激活锁定与ACQUIRE_CAUSES_WAKEUP标志。你必须获得这个wakelock bcoz它会强制屏幕打开,如果没有。即使屏幕已经打开,也不能保证在你的应用程序运行之前,除非你获得了唤醒锁定,否则它将保持开启。当你完成时不要忘记释放唤醒锁。
答
我认为您可以在状态栏上发布通知,而不管状态如何 - 需要完全用户关注的应用程序通常会禁用状态栏的显示 - 因此,更新不会造成任何损害。
是的,问题是我不知道屏幕是否打开,因为用户是点击周围,或因为应用程序保持打开。 – oneself
对,我知道。但是根本的区别是什么?如果你不想打断用户,他是否点击左右,或者如果屏幕正在被应用程序占用,是否重要? – AedonEtLIRA