检测应用程序何时保持屏幕开启

时间:2011-10-11 15:08:01

标签: android wakelock

我正在编写一款Android应用,主要通过状态栏通知与用户进行通信。但是,如果他/她不是真的直接与他们的手机进行交互,我想打扰用户。例如,如果用户正在使用导航应用程序或观看电影。我认为这些应用程序中所有(或大多数)应用程序之间的共性是它们保持屏幕开启。我相信应用程序可以通过使用WakeLock或通过在其活动上指定keepScreenOn参数来保持屏幕打开,可能还有其他方法。

我想知道,在我要显示通知之前,我是否可以检查另一个应用程序是否保持屏幕,以便我可以避免打扰用户。我想涵盖所有选项。我可以看到WakeLock有一个isHeld()方法,但会检测另一个方法吗?

谢谢,

3 个答案:

答案 0 :(得分:1)

我认为你能得到的最好的是PowerManager.isScreenOn();

答案 1 :(得分:0)

使用ACQUIRE_CAUSES_WAKEUP标志获取屏幕明亮的唤醒锁。你不得不获得这个唤醒锁bcoz它将迫使屏幕打开,如果不是。即使屏幕已经打开,也不能保证它会保持打开直到你的应用程序运行,除非你获得唤醒锁。完成后不要忘记释放唤醒锁。

答案 2 :(得分:0)

我认为您可以在状态栏上发布通知而不管状态 - 需要完全用户注意的应用程序通常会完全禁用状态栏的显示 - 所以你的更新不会造成任何伤害。