2010-11-17 14 views

risposta

11

Il sistema trasmetterà quando lo schermo si accende e si spegne -

Per ascoltare per questi, è possibile creare un BroadcastReceiver che ascolta per gli eventi:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

sono elencati nella documentazione here:

Inoltre, c'è un tutorial su come rispondere a questi eventi che si potrebbe trovare impiego Ful.

+5

C'è una differenza tra l'avere la stessa risposta e la copia di uno. Abbiamo fatto la stessa ricerca di Google: P –

+0

Leggi attentamente il documento! Questa risposta in realtà ti dice se il dispositivo è "interattivo". Se lo schermo è bloccato, il dispositivo non è interattivo. Solo 'android.hardware.display.DisplayManager' può dirti se l'hardware del display è attualmente attivo. Tuttavia, questo probabilmente richiede Android 5. – OneWorld

19

Il modo più semplice è quello di mettere questo nel metodo 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

Grazie a questo funziona benissimo e dovrebbe essere contrassegnato come risposta. – pmont

+0

Come e quando annullare la registrazione del ricevitore in questo caso? –

+1

È possibile chiamare [unregisterReceiver()] (http://developer.android.com/reference/android/content/Context.html#unregisterReceiver (android.content.BroadcastReceiver)) in qualsiasi momento. Ma supponendo che tu inserisca il codice sopra in 'MyApplication.onCreate()', non devi farlo _ perché non c'è alcuna funzione Application.onDestroy() (la classe 'Application' è unica in quel modo - vedi i documenti ufficiali o [ qui] (http://stackoverflow.com/questions/17278201/android-ondestroy-or-similar-method-in-application-class) per maggiori informazioni). –

Problemi correlati