2011-02-26 3 views
0

J'essaye d'écrire une application simple qui devrait muter mon téléphone portable pour un temps donné. C'est ma première application Android, mais après plusieurs heures de lecture, je pense qu'elle est presque terminée. Mais il y a toujours un problème que je ne peux pas résoudre. J'utilise une activité pour afficher l'interface utilisateur graphique (IUG). Il a des boutons pour définir l'heure de début et de fin, et tout le reste nécessaire. Lorsque l'utilisateur a entré tous les paramètres, ils sont passés à un service. Ce service utilise un objet gestionnaire pour enregistrer 2 rappels (avec Handler.postDelayed). Un pour démarrer Mute et un pour End Mute (dans SetMuteIntervall). Les premiers tests ont semblé fonctionner, mais si j'essaie de le couper pendant 30 minutes, il ne s'éteindra jamais. Je pense que cela a quelque chose à voir avec le fait que le téléphone mobile est ou était en mode veille. J'ai également essayé d'utiliser Handler.postAt() mais cela ne fonctionnait pas non plus (et le temps relatif à la disponibilité était quelque peu confus). Alors, que dois-je faire pour que mes rappels soient appelés, que le téléphone soit en mode veille ou non?Handler.postDelayed pas appelé lorsque le téléphone portable en mode veille

est ici la source de mon programme:

http://pastebin.com/XAgCeAq9

http://pastebin.com/33nepFV5

Répondre

1

Essayez d'utiliser AlarmManager pour la planification des actions à l'avenir. AlarmManager n'est pas en mode veille et fonctionnera même si le périphérique est en veille.

Votre thread est réellement arrêté, puis le téléphone est en mode veille. Si vous voulez toujours utiliser le thread, vous pouvez utiliser WakeLock pour empêcher le CPU de passer en mode veille (mais toujours pour éteindre l'écran) mais ce n'est pas la meilleure solution dans votre cas.

Questions connexes