Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I prevent screen timeout on Windows Phone 7?

In the CE based Windows Mobile you could prevent the screen back-light from timing out using the SetPowerRequirement and ReleasePowerRequirement API's like so:

IntPtr handle = SetPowerRequirement("BKL1:", PowerState.FULL, 1, IntPtr.Zero, 0);
// screen won't timeout while you do stuff in here
ReleasePowerREquirement(handle);

Is a similar thing possible on WP7?

like image 536
dkackman Avatar asked Dec 21 '22 22:12

dkackman


1 Answers

Yes, it is possible. You can use PhoneApplicationService.Current.UserIdleDetectionMode to stop the screen backlight timing out and stop the screen from locking.

You can also use PhoneApplicationService.Current.ApplicationIdleDetectionMode to allow the application to keep running under a lock screen.

Here's some more detail on those two options:

UserIdleDetectionMode

Disabling this will stop the screen from timing out and locking. As an example, I disable UserIdleDetectionMode while downloading a large file, so the app doesn't kill the download half-way.

When the download is completed, I re-enable UserIdleDetectionMode so the screen can timeout as usual.

ApplicationIdleDetectionMode

NB: This is a one-time hit. You can disable it, but you cannot re-enable it.

If you disable ApplicationIdleDetectionMode, your app will continue to run when the screen locks. Your app will still die if the user starts a different app.

The certification requirements ask that you prompt the user the first time you disable ApplicationIdleDetectionMode. E.g. "This app will continue to run under a locked screen, and may drain your battery. Are you ok with that?" If you don't your app will be rejected.

like image 55
Ben Gracewood Avatar answered Jan 25 '23 22:01

Ben Gracewood