2010-09-11 25 views
1

J'ai un signal qui met mon application en veille pendant un nombre de minutes donné (en utilisant AlarmManager), puis la réactive.Wakelock n'allume pas l'écran? Aidez-moi?

Tout fonctionne sauf que l'écran ne s'allume jamais. J'utilise un wakelock comme si d'une classe de BroadcastReceiver:

 KeyguardManager key = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock lock = key.newKeyguardLock(TAG); 
    lock.disableKeyguard(); 
    Log.v(TAG, "alarm: disabled keyguard."); 

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    gpsMain.wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG); 
    gpsMain.wl.acquire(); 
    Log.v(TAG, "alarm: acquired wakelock"); 

    Intent i = new Intent(); 
    i.setAction(CUSTOM_INTENT); 
    context.sendBroadcast(i); 

Je puis relâchez le wakelock quand je suis sûr que mon application est en cours d'exécution et connecté à nouveau. Cependant, l'écran ne s'allume jamais! L'application ne revient réellement à la vie quand je frappe le bouton d'alimentation pour réveiller l'écran manuellement.

Je développe sur un HTC Hero. Toute aide serait grandement appréciée.

Répondre

1

Vous devez utiliser le drapeau ACQUIRE_CAUSES_WAKEUP.

+0

Oui, j'ai changé mon verrou pour utiliser PowerManager.ACQUIRE_CAUSES_WAKEUP en plus de FULL_WAKE_LOCK. J'utilise aussi AlarmManager.RTC_WAKEUP, qui est censé réveiller le téléphone quand l'alarme se déclenche. Toujours pas de chance si ... –

+0

@Tom G: Hmmmm ... c'est bizarre. J'ai juste eu un échange d'email cette semaine avec quelqu'un sur la liste 'androïdes-développeurs ', qui a dit que cela a fonctionné pour lui. Je suis un peu confus au sujet de vos symptômes: est-ce que votre code fonctionne mais l'écran ne s'allume pas, ou votre code ne fonctionne-t-il pas? – CommonsWare

+0

Donc, je pense que je l'ai résolu. J'achetais le wakelock dans le broadcastreceiver que l'alarme appelle, mais je le relâchais dans mon fil principal. J'ai déplacé la sortie à la fin de la fonction onReceive et maintenant il semble fonctionner. –