Подтвердить что ты не робот

Как запретить экрану устройства Android отключиться во время выполнения Activity?

У меня есть Activity, которому обычно требуется некоторое время, чтобы смотреть экран без взаимодействия с ним.

Проблема в том, что экран отключается, как и с almos в любом другом приложении. Я хочу предотвратить автоматическое отключение для моего Activity, например Dolphin HD (если вы настроите его из меню настроек).

Я хочу, чтобы пользователь отключил экран, нажимая обычную кнопку блока, но не включайте автоматический блок устройства, а в моем Activity.

Как я могу это достичь?

Thanx.

4b9b3361

Ответ 1

Добавьте android:keepScreenOn="true" к некоторому виджету в вашем XML-ресурсе компоновки для этого действия. Пока этот виджет отображается на экране, экран не будет автоматически отключен.

EDIT:

A WakeLock, как было предложено другими ответами, технически будет работать. Но тогда вы должны вручную отпустить WakeLock (если вы испортите это, экран останется надолго). И, поскольку вы можете испортить это, вам нужно разрешение WAKE_LOCK. Использование keepScreenOn позволяет избежать всего этого.

Ответ 2

Чтобы изменить его на лету, выполните следующее:

if (keepScreenOn)
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Ответ 3

Для "Xamarin Android":

Window.AddFlags(WindowManagerFlags.KeepScreenOn);

Ответ 4

Вы хотите добавить WAKE_LOCK в свой манифест и установить и удалить его по мере необходимости в своем приложении. См. Документы google здесь для PowerManager.WAKE_LOCK

http://developer.android.com/reference/android/os/PowerManager.html

Ответ 6

Обработка фрагментов и поворот экрана

Документация Android, не дайте устройству проснуться, описывает каждое решение.

Решение № 1 - Флаги

Документация - Альтернативы использованию пробуждения замков

Для фрагментов используйте программный подход, который требует меньше батареи.

включить

activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

запрещать

activity!!.window.clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON)

Для моего случая использования я вызвал это в onStop() чтобы экран по умолчанию onStop() к нормальной конфигурации при выходе из фрагмента, показывающего медиа-контент.

избежать

keepScreenOn=true не работает при изменении конфигурации, например при повороте экрана для фрагментов.

Примечание: Android Keep the device сна документация должна быть обновлена соответствующим образом, чтобы справиться с этим делом.

Решение № 2 - Wake Lock

Документация - держите процессор включенным с помощью Wake Locks

Функция Wake Lock обеспечивает больший контроль над поддержанием определенных элементов устройства в неактивном состоянии, но при этом потребляет больше энергии батареи, и ее важно разблокировать вручную, чтобы сохранить батарею, поскольку она не обрабатывается системой автоматически.