2010-11-17 9 views

Répondre

11

Le système diffusera lorsque l'écran allume et éteint -

Pour écouter ceux-ci, vous pouvez créer un BroadcastReceiver qui écoute les événements:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

Ils sont répertoriés dans la documentation here:

de plus, il y a un tutorial sur la réponse à ces événements que vous pourriez trouver une utilisation ful.

+5

Il y a une différence entre avoir la même réponse et la copie d'un. Nous avons fait la même recherche google est tout: P –

+0

Lire attentivement le doc! Cette réponse vous indique en fait si l'appareil est "interactif". Si l'écran est verrouillé, l'appareil n'est pas interactif. Seul 'android.hardware.display.DisplayManager' peut vous dire, si le matériel d'affichage est actuellement activé. Cependant, cela nécessite probablement Android 5. – OneWorld

19

plus simple est de mettre ceci dans votre méthode 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

Merci cela fonctionne très bien et devrait être marqué comme la réponse. – pmont

+0

Comment et quand désinscrire le récepteur dans ce cas? –

+1

Vous pouvez appeler [unregisterReceiver()] (http://developer.android.com/reference/android/content/Context.html#unregisterReceiver (android.content.BroadcastReceiver)) à tout moment. Mais en supposant que vous mettez le code ci-dessus dans 'MyApplication.onCreate()', vous n'avez pas à le faire car il n'y a pas de fonction Application.onDestroy() (la classe 'Application' est unique de cette façon - voir les docs officiels ou [ ici] (http://stackoverflow.com/questions/17278201/android-ondestroy-or-similar-method-in-application-class) pour plus d'informations). –

Questions connexes