2010-11-17 14 views

Odpowiedz

11

System będzie nadawać gdy ekran włącza się i wyłącza -

Aby słuchać na nich, można utworzyć BroadcastReceiver który nasłuchuje zdarzeń:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

Są one wymienione w dokumentacji here:

Ponadto, istnieje tutorial o odpowiedzi na te zdarzenia, które może znaleźć zastosowanie ful.

+5

Istnieje różnica między posiadające tę samą odpowiedź i skopiowanie jednego. Zrobiliśmy to samo wyszukiwanie google: P –

+0

Przeczytaj uważnie dokument! Ta odpowiedź faktycznie mówi, czy urządzenie jest "interaktywne". Jeśli ekran jest zablokowany, urządzenie nie jest interaktywne. Tylko 'android.hardware.display.DisplayManager' może powiedzieć, czy sprzęt graficzny jest aktualnie włączony. Jednak to prawdopodobnie wymaga Androida 5. – OneWorld

19

Najprostszym sposobem jest umieszczenie tego w swojej metodzie 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

Dzięki temu działa świetnie i powinien zostać oznaczony jako odpowiedź. – pmont

+0

Jak i kiedy wyrejestrować odbiornik w tym przypadku? –

+1

Możesz zadzwonić [unregisterReceiver()] (http://developer.android.com/reference/android/content/Context.html#unregisterReceiver (android.content.BroadcastReceiver)) w dowolnym momencie. Ale zakładając, że umieściłeś powyższy kod w 'MyApplication.onCreate()', nie możesz tego zrobić, ponieważ nie ma funkcji Application.onDestroy() (klasa 'Application' jest unikalna w ten sposób - zobacz oficjalne dokumenty lub [ tutaj] (http://stackoverflow.com/questions/17278201/android-ondestroy-lub-similar-method-in-application-class), aby uzyskać więcej informacji). –

Powiązane problemy