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?
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:
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With