2011-10-11 105 views
2

我正在編寫一個Android應用程序,主要是通過狀態欄通知與用戶通信。但是,我想而不是如果他/他不是真的直接與他們的手機進行交互,麻煩用戶。例如,如果用戶正在使用導航應用程序或正在觀看電影。我認爲所有(或大多數)這類應用程序之間的共同點是它們保持屏幕開啓。我相信應用程序可以通過使用WakeLock或通過在其活動中指定keepScreenOn參數來保持屏幕開啓,但可能有其他方法。檢測當應用程序保持屏幕

我想知道,在我要顯示通知之前,我可以檢查另一個應用程序是否將屏幕保持打開狀態,以免打擾用戶。我想涵蓋所有選項。我可以看到WakeLock有一個isHeld()方法,但會檢測另一種方法嗎?

謝謝

回答

1

我認爲你可以得到最好的是PowerManager.isScreenOn();

+0

是的,問題是我不知道屏幕是否打開,因爲用戶是點擊周圍,或因爲應用程序保持打開。 – oneself

+0

對,我知道。但是根本的區別是什麼?如果你不想打斷用戶,他是否點擊左右,或者如果屏幕正在被應用程序佔用,是否重要? – AedonEtLIRA

0

採集屏幕亮激活鎖定與ACQUIRE_CAUSES_WAKEUP標誌。你必須獲得這個wakelock bcoz它會強制屏幕打開,如果沒有。即使屏幕已經打開,也不能保證在你的應用程序運行之前,除非你獲得了喚醒鎖定,否則它將保持開啓。當你完成時不要忘記釋放喚醒鎖。

0

我認爲您可以在狀態欄上發佈通知,而不管狀態如何 - 需要完全用戶關注的應用程序通常會禁用狀態欄的顯示 - 因此,更新不會造成任何損害。