Désactiver le lock screen sous Windows Phone 7

Posted by & filed under Dev'.

Lockscreen Windows Phone 7
Windows Phone 7 n’est pas multi-tâche (du moins pour les développeurs tiers), ça vous le saviez déjà. Mais disons que vous souhaitez développer une application qui occupe le téléphone un long moment sans interaction de l’utilisateur avec l’écran (ce qui aurait pu être une tâche de fond sous WM6.5 ou Android mais je vais m’éloigner de mon sujet…) : vous allez rencontrer un problème, c’est que le téléphone va se mettre en veille et tombstonner votre application.

Cela peut être fort gênant si vous développez une application de musique (radio), ou vidéo (bien que si vous utilisez MediaElement, les choses ont été bien faites et la lecture d’un média inhibe le lockscreen), ou encore une application de tracking GPS (#ridetracker, projet WP7 à venir sur ce blog).

Sachez que vous pouvez inhiber la veille du téléphone de deux façons :

  • Microsoft.Phone.Shell.PhoneApplicationService.Current.ApplicationIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
    Permet à votre application de ne pas se faire tombstonner quand le téléphone se met en veille, en clair votre application tourne derrière le lockscreen. C’est le comportement le plus proche d’un thread d’arrière plan.
  • Microsoft.Phone.Shell.PhoneApplicationService.Current.UserIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
    Permet de désactiver purement et simplement le lockscreen !

Tant que j’y suis, PhoneApplicationService contient une autre propriété intéressante : Microsoft.Phone.Shell.PhoneApplicationService.Current.StartupMode, qui permet de savoir si vous êtes dans une nouvelle instance de l’application ou bien si vous êtes réssucité d’un état tombstonné.

[English version below]

English version : Disable Windows Phone 7’s lock screen


Windows Phone 7 does not allows multitasking for 3rd-party developpers, but I think you already know about that. But say you’re looking to develop an app that keeps the phone busy for a while, without requesting any user interaction (what could have been a background thread on WM6.5 or Android, but that’s another topic…) : you’re going to have a problem, within some time the phone will go to standby mode, and your app is going to be tombstonned.

That could be a problem if you’re developping a music/radio/video app (even though the fact that you should use a MediaElement, and it’s smart enough to disable to lockscreen while a media is played), or a GPS tracking app (#ridetracker, more to come soon on this blog).

Well, you can solve this problem by using one of the following

  • Microsoft.Phone.Shell.PhoneApplicationService.Current.ApplicationIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
    The shell won’t kill your process while the lockscreen is on. That’s the closest behavior to a background thread.
  • Microsoft.Phone.Shell.PhoneApplicationService.Current.UserIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
    This one will simply disable the lockscreen !

And while I’m at it, there’s another interesting item in PhoneApplicationService : Microsoft.Phone.Shell.PhoneApplicationService.Current.StartupMode which value tells your application is a fresh instance or bought back to life from tombstonning.

Comments are closed.