2013-04-26 55 views
1

對於一個工業應用程序,客戶要求用戶在應用程序首次發佈時被要求登錄,並且如果設備「進入睡眠」狀態,又意味着他是否關閉設備並且屏幕熄滅。如果用戶放下設備並走開,並且工廠的其他人員發現該設備,則該用戶必須使用自己的ID登錄該應用程序。如何檢測應用程序從顯示超時時間「醒來」?

無論如何,當應用程序第一次啓動時,我可以強制登錄主屏幕Activity的onCreate事件,但在顯示後看起來似乎沒有「喚醒」活動生命週期事件時間到。 onResume處理程序會被召喚出各種各樣的東西,比如剛剛從同一個應用程序中的另一個活動中返回,所以這太泛化了。

如何檢測應用程序何時從顯示超時醒來?

N.B. - 我不在乎是否檢測到顯示開啓本身關於檢測屏幕打開(Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?)有幾個關於堆棧溢出的討論,其中共識似乎是這個很難,甚至有意不鼓勵。我只是想知道當我自己的應用程序「醒來」時。如果檢測到屏幕打開是唯一的或最好的方式來做到這一點,有人請給我指向一些示例代碼?

在此先感謝。

+0

你有[搜索stackoverflow](http://stackoverflow.com/questions/2577318/is-it-possible-to-write-an-android-broadcast-receiver-that-detects-when-the-phon) ? – 2013-04-26 20:17:06

+0

http:// stackoverflow。com/questions/9477922/android-broadcast-receiver-for-screen-on-and-screen-off – 2013-04-26 20:17:56

+0

是的,我確實做了一個搜索,並且看到了上面的以及關於SCREEN_OFF的其他一些討論(例如,http: /stackoverflow.com/questions/1588061/android-how-to-receive-broadcast-intents-action-screen-on-off),並且共識似乎是這個問題要麼是非常困難,要麼是受到Android的阻礙。我會更新我的問題以反映這一點。 – user316117 2013-04-26 20:27:53

回答

2

如何檢測應用程序何時從顯示超時醒來?

使用registerReceiver()(可能是從onResume())和unregisterReceiver()(大概是從onPause())註冊爲ACTION_USER_PRESENTACTION_USER_PRESENTACTION_SCREEN_ON的區別在於ACTION_USER_PRESENT不會被調用,直到用戶超過​​鍵盤鎖,無論是刷卡解鎖還是PIN碼或其他。

我的「可能」陳述是因爲我從來沒有試過你的具體情況。 通常,你會在這些生命週期回調中使用這些方法來動態註冊接收器,但對於ACTION_USER_PRESENT,您可能必須更積極,使用onCreate()onDestroy()或其他東西。

的共識似乎在哪裏是這個又硬又甚至故意氣餒

我不知道你是如何從這個問題和它的答案,這個結論。

我只想知道我的應用何時「醒來」。

有沒有這樣的概念。應用程序不會「醒來」。設備「醒來」。

+0

如果用戶(如我)沒有任何鍵盤鎖/刷卡或其他活動,ACTION_USER_PRESENT是否仍會觸發?我只是打開屏幕... – BrainCrash 2014-03-13 16:34:13

+0

@BrainCrash:我不知道,對不起 – CommonsWare 2014-03-13 19:33:11

相關問題