Можно ли предотвратить тайм-аут экрана на Windows Phone 7?
В Windows Mobile на базе CE вы можете предотвратить тайм- аут подсветки экрана с помощью API SetPowerRequirement и ReleasePowerRequirement, например, так:
IntPtr handle = SetPowerRequirement("BKL1:", PowerState.FULL, 1, IntPtr.Zero, 0);
// screen won't timeout while you do stuff in here
ReleasePowerREquirement(handle);
Возможно ли подобное на WP7?
1 ответ
Да, это возможно. Ты можешь использовать PhoneApplicationService.Current.UserIdleDetectionMode
остановить тайм-аут подсветки экрана и заблокировать экран.
Вы также можете использовать PhoneApplicationService.Current.ApplicationIdleDetectionMode
чтобы приложение продолжало работать под экраном блокировки.
Вот еще несколько подробностей об этих двух вариантах:
UserIdleDetectionMode
Отключение этого остановит экран от тайм-аута и блокировки. Например, я отключаю UserIdleDetectionMode при загрузке большого файла, чтобы приложение не прерывало загрузку на полпути.
Когда загрузка будет завершена, я снова включу режим UserIdleDetectionMode, чтобы время ожидания на экране могло быть обычным.
ApplicationIdleDetectionMode
NB: Это одноразовый хит. Вы можете отключить его, но вы не можете повторно включить его.
Если вы отключите ApplicationIdleDetectionMode, ваше приложение продолжит работу после блокировки экрана. Ваше приложение все равно умрет, если пользователь запустит другое приложение.
Требования сертификации требуют, чтобы вы запрашивали пользователя при первом отключении ApplicationIdleDetectionMode. Например, "Это приложение будет продолжать работать под заблокированным экраном и может разрядить аккумулятор. С вами все в порядке?" Если вы этого не сделаете, ваше приложение будет отклонено.