2010-04-05 6 views

Répondre

3

Si vous avez un service qu'il actif, vous pouvez attraper ces événements avec

registerReceiver(new BroadcastReceiver() { 

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

Toutefois, ce repose d'avoir un service sans cesse la course que j'ai récemment appris est découragé parce qu'il est fragile (le système d'exploitation aime les fermer) et utilise les ressources de façon permanente. De manière décevante, il semble qu'il ne soit pas possible d'avoir un récepteur dans votre manifeste qui intercepte les événements SCREEN_ON.

Cela est venu récemment:

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

également

Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?

+0

ah merci afin que détectera l'écran et permettez-moi de le gérer correctement à droite? Je lisais votre thread et vous ne recommande pas d'avoir un service d'arrière-plan en cours d'exécution et en attendant que le téléphone se réveille. Pourquoi? Quel est l'inconvénient et y a-t-il un moyen de contourner? Les services d'arrière-plan n'exécutent-ils pas la détection d'événements de ce type? – Joe

+0

Cet article traite de la question de service d'arrière-plan - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ –

+0

le problème avec cette réponse, pourquoi cela fonctionne, est parce que votre activité ne reçoit pas les intentions lorsque le téléphone est endormi. Vous pouvez donc enregistrer screen_on dans votre activité, mais vous ne l'aurez jamais. –

0

Vous avez raison sur le récepteur de radiodiffusion. Vous pouvez écouter les événements de diffusion SCREEN_ON et SCREEN_OFF.

3

Vous pouvez également avoir un récepteur de diffusion qui intercepte l'intention de diffusion USER_PRESENT lorsque l'utilisateur a déverrouillé l'appareil. Naturellement, certaines versions de Honeycomb n'honorent pas cela, mais pour toutes les versions non-crânes d'Android (2.x et 4.x), cela fonctionne bien.

+1

Cela fonctionne également si vous vous inscrivez depuis AndroidManifest.xml. – bk138

Questions connexes