Можно ли предотвратить тайм-аут экрана на 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. Например, "Это приложение будет продолжать работать под заблокированным экраном и может разрядить аккумулятор. С вами все в порядке?" Если вы этого не сделаете, ваше приложение будет отклонено.

Другие вопросы по тегам