Как запретить экрану устройства Android отключиться во время выполнения Activity?
У меня есть Activity
, которому обычно требуется некоторое время, чтобы смотреть экран без взаимодействия с ним.
Проблема в том, что экран отключается, как и с almos в любом другом приложении.
Я хочу предотвратить автоматическое отключение для моего Activity
, например Dolphin HD (если вы настроите его из меню настроек).
Я хочу, чтобы пользователь отключил экран, нажимая обычную кнопку блока, но не включайте автоматический блок устройства, а в моем Activity
.
Как я могу это достичь?
Thanx.
Ответы
Ответ 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
Ответ 5
Вы можете использовать блокировку во включенном режиме, чтобы предотвратить выключение экрана. Обратиться к http://developer.android.com/reference/android/os/PowerManager.WakeLock.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 обеспечивает больший контроль над поддержанием определенных элементов устройства в неактивном состоянии, но при этом потребляет больше энергии батареи, и ее важно разблокировать вручную, чтобы сохранить батарею, поскольку она не обрабатывается системой автоматически.