2010-11-17 227 views

回答

11

系統將廣播 -

爲了聽這些,你可以創建一個偵聽事件一個BroadcastReceiver:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

他們的文檔here中列出:

此外,還有一個tutorial關於應對這些事件,你可能會發現使用FUL。

+5

有具有相同的答案,一個拷貝之間的差異。我們做了相同的谷歌搜索是:P – 2010-11-22 20:32:23

+0

仔細閱讀文檔!這個答案實際上告訴你,如果設備是「互動」。如果屏幕被鎖定,則設備不是交互式的。如果顯示硬件當前處於打開狀態,則只有'android.hardware.display.DisplayManager'可以告訴你。但是,這可能需要Android 5. – OneWorld 2016-09-29 11:02:40

19

最簡單的方法就是把這個在您的MyApplication.onCreate()方法:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
registerReceiver(new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_OFF); 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_ON); 
     } 
    } 
}, intentFilter); 
+0

感謝這很好,應該標記爲答案。 – pmont 2014-04-22 22:10:13

+0

在這種情況下如何以及何時註銷Receiver? – 2015-03-17 09:16:04

+1

你可以在任何你喜歡的地方調用[unregisterReceiver()](http://developer.android.com/reference/android/content/Context.html#unregisterReceiver(android.content.BroadcastReceiver))。但是假設你將上面的代碼放在'MyApplication.onCreate()'中,你不會這麼做,因爲沒有Application.onDestroy()函數(Application類是唯一的 - 請參閱官方文檔或[這裏](http://stackoverflow.com/questions/17278201/android-ondestroy-or-similar-method-in-application-class)獲取更多信息)。 – 2015-03-17 20:34:37