2010-04-05 12 views

回答

3

如果您有它積極的,你可以捕捉這些事件

registerReceiver(new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    // do something 
    } 
}, new IntentFilter(Intent.ACTION_SCREEN_ON)); 

然而,這依賴於擁有一個永遠正在運行的服務這是我最近學會了不鼓勵,因爲它是脆服務(操作系統喜歡關閉它們)並永久使用資源。

令人失望的是,它似乎不可能在清單中有一個接收器來攔截SCREEN_ON事件。

這又拿出了最近:

android.intent.action.SCREEN_ON doesn't work as a receiver intent filter

Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?

+0

啊謝謝,這將檢測到屏幕上,並讓我妥善處理它的權利? 我在讀你的帖子,你不建議讓後臺服務運行並等待電話醒來。爲什麼?有什麼缺點,有什麼方法嗎?如何檢測像這樣的事件是不是運行後臺服務? – Joe 2010-04-05 07:33:28

+0

本文討論後臺服務問題 - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ – 2010-04-05 08:13:25

+0

該答案的問題,任何它爲什麼工作的原因是您的活動在手機睡着時不會收到意圖。所以你可以在你的活動中註冊screen_on,但你永遠不會得到它。 – 2012-01-30 17:11:07

0

你是正確的廣播接收器。您可以收聽SCREEN_ON和SCREEN_OFF廣播事件。

3

您也可以擁有一個廣播接收器,捕獲用戶解鎖設備時的USER_PRESENT廣播意圖。自然,Honeycomb的某些版本並不尊重這一點,但對於Android的所有非腦死亡版本(2.x和4.x),它很好地工作。

+1

如果您從AndroidManifest.xml註冊,這也適用。 – bk138 2013-02-28 11:22:16