Как включить часы в спящем режиме Android

В этой статье мы попросили мастера ответить на вопрос: «Как включить часы в спящем режиме Android?», а также дать полезные рекомендации по теме. Что из этого получилось, читайте далее.

Служба, которая не спит. 3 способа обойти режимы энергосбережения Android в своей программе

Давай представим, что у нас есть приложение, а у него, в свою очередь, есть служба (service), которая должна постоянно висеть в фоне, обрабатывать команды, полученные от сетевого сервера, и отправлять ответы. Связь с сервером, как это и положено мобильным устройствам, поддерживается с помощью long poll запросов, то есть приложение подключается к удаленному серверу и ждет, пока тот отправит что-либо в ответ, а потом переподключается и ждет снова. Это эффективный и очень экономный в плане заряда батареи способ, который в том числе используется в механизме push-уведомлений самого Android.

В теории все выглядит отлично, архитектура приложения абсолютно правильная, вот только, если начать его тестировать, вскроется несколько очень неприятных моментов.

Режимы энергосбережения Android

В Android 4.4–5.1 (версии ниже мы рассматривать не будем — они стремительно устаревают) служба будет работать и моментально откликаться на запросы сервера, но только до тех пор, пока экран включен. Через несколько секунд после отключения экрана смартфон перейдет в режим сна (suspend), и промежуток между отправкой запроса и ответом нашего приложения будет составлять примерно минуту. Это срок между maintenance-пробуждениями устройства, и повлиять на него мы не можем.

В Android 6.0–7.1 ситуация будет примерно такой же, однако спустя примерно час смартфон перейдет в так называемый режим Doze. После этого ответ от приложения можно либо не получить вовсе, либо получить спустя час или два. А все потому, что в режиме Doze смартфон фактически не дает работать сторонним приложениям и их службам и полностью отрезает им доступ в Сеть. Управление они могут получить только на короткий промежуток времени спустя час после перехода в режим Doze, затем два часа, четыре часа, со все большим увеличением промежутков между пробуждениями.

Хорошие новости в том, что Doze работает общесистемно и включается спустя час после отключения экрана и только если не трогать смартфон (в 7.0–7.1 можно и трогать), а отключается сразу после разблокировки смартфона, подсоединения к заряднику или движения смартфона (опять же не в 7.0–7.1). То есть можно надеяться на то, что хотя бы днем наш сервис будет работать нормально.

Плохие же новости в том, что, помимо Doze, в Android 6.0–7.1 есть и другой механизм энергосбережения под названием App Standby. Работает он примерно так: система следит за тем, какие приложения использует юзер, и применяет к редко используемым приложениям те же ограничения, что и в случае с режимом Doze. При подключении к заряднику все переведенные в режим Standby приложения получают амнистию. К приложениям, имеющим уведомление или права администратора (не root), режим Standby не применяется.

Итого, в Android есть сразу три механизма, с которыми придется бороться:

  • Suspend — обычный режим энергосбережения, может замедлить получение ответа от устройства примерно на одну минуту;
  • App Standby — агрессивный режим энергосбережения, способный замедлить получение ответа на сутки;
  • Doze — агрессивный общесистемный режим энергосбережения, который применяется ко всем приложениям.

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

Сценарий 1. Небольшая задержка в ответе некритична, переход в Doze некритичен

В этом сценарии у тебя есть приложение, для которого задержка в ответе до одной минуты некритична, а переход смартфона в режим агрессивного энергосбережения совсем не страшен. Все, что тебе нужно, — это чтобы система не отправляла приложение в состояние Standby.

Два самых простых способа добиться этого — либо вывести службу на передний план (foreground service), либо дать приложению права администратора устройства. Начнем с первого варианта.

Foreground service

Foreground service в терминологии Android — это служба, которая имеет уведомление в шторке. Система относится к таким службам гораздо бережнее. Например, при нехватке памяти она будет убита в последнюю очередь, она не будет убита при смахивании приложения в меню управления запущенными приложениями, и да, к ней не будет применен режим Standby.

Создать foreground service очень просто. Достаточно вставить в код службы примерно такие строки:

Этот пример создает уведомление, при тапе на которое будет запущена ExampleActivity, в конце с помощью startForeground() служба переводится в статус foreground.

Права администратора

Другой вариант — это дать приложению права администратора. Такие права обеспечивают возможность управлять политикой формирования паролей экрана блокировки, делать удаленную блокировку и вайп устройства.

В свое время Google ввела понятие «администратор устройства» для компаний, которые хотели бы управлять смартфонами своих сотрудников. То есть компания создает приложение, которое получает права администратора и может заблокировать или сбросить телефон после команды от сервера. Именно поэтому приложение с правами администратора не переходит в режим Standby, ведь команда на блокировку может прийти в любой момент.

Получить, а точнее запросить права администратора опять же просто. Для начала нам понадобится пара колбэков, которые будут вызваны после того, как права получены или отозваны:

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.

Как включить часы в спящем режиме Android

Переход мобильного устройства в спящий режим означает автоматическое отключение дисплея, когда гаджет определенное время находится в бездействии. Эта возможность реализована с целью экономии энергии аккумулятора телефона.

Чтобы включить или отключить спящий режим в Android, необходимо перейти в соответствующие настройки. В зависимости от модели смартфона они несколько отличаются, хотя и незначительно.

Как это сделать

Когда возникает необходимость включить/отключить спящий режим в Android, нужно перейти в основное меню настроек телефона и найти опцию «Дисплей» или «Экран». При нажатии на эту ссылку появится вкладка «Спящий режим». Здесь устанавливается временной интервал, по истечению которого устройство автоматически перейдет в спящий режим в Android. Установив галочку «Никогда», вы отключаете возможность работы устройства в спящем режиме, поэтому оно будет активно функционировать все время, пока телефоном никто не пользуется.

Иногда возникают ситуации, когда необходимо выключить дисплей мобильного устройства, не активируя спящий режим. Стандартный вариант – экономия батареи смартфона, когда он подключен к телевизору при помощи HDMI-кабеля.

Основная проблема состоит в том, что если выключить смартфон, то энергия не будет идти по HDMI кабелю, в результате чего последует затухание экрана телевизора, так как телефон находится в спящем режиме. Приведем еще 1 пример – на планшете запущена игра для Android. Затем к устройству подключается клавиатура или мышь с помощью док-станции. Изображение выводится на экран. Повторяется упомянутая проблема. Нельзя выключить экран телефона без перехода в спящий режим. Если ничего не делать, то смартфон быстро разрядится. Стандартными настройками решить задачу невозможно.

Необходимо скачать приложение для Android под названием Screen Standby. Средствами программы можно отключить дисплей при полной работоспособности телефона. Загрузить приложение можно через сервис Google Play на бесплатной основе.

Отныне просматривать фильмы, запускать игровые приложения и работать в интернете можно на большом экране, подключив телефон к телевизору. Существенно экономится заряд. Хотим заметить, что на текущий момент не существует достойных аналогов этому программному обеспечению. Чтобы утилита корректно функционировала, следует установить root права доступа. С помощью Screen Standby можно выключать подсветку в автоматическом режиме в момент подключения HDMI-кабеля, а также перевести дисплей телефона в тачпад-режим.

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

Как отключить засыпание экрана в приложениях на Android

Для начала, давайте определимся, зачем нам может понадобиться отключать тайм-аут экрана, ведь лишнее время работы экрана приводит к быстрой разрядке аккумулятора? Например, вы читаете статью в браузере или смотрите видео в YouTube, делаете паузу и через минуту ваше устройство уже спит крепким сном. Или другой вариант – вы используете смартфон в качестве пульта управления или демонстрируете слайды. Таким образом, самыми распространенными случаями, когда требуется постоянно активный экран, являются:

  • чтение электронных книг, документов, другой текстовой информации;
  • просмотр фото- и видеоматериалов;
  • демонстрация чего-либо на экране смартфона;
  • игры, геймплей которых не требует активных действий;
  • работа с GPS и картографическими программами.

Некоторые программы и игры отлично справляются с этой задачей самостоятельно. Обычно, во многих читалках, видеоплеерах и других приложениях в настройках есть опция, препятствующая засыпанию устройства. Но далеко не во всех. В таких случаях проще всего в системных настройках выставить более длительный тайм-аут экрана для активного режима. Но, согласитесь, это даже не столько неудобно, сколько нерационально. Поэтому мы поступим по-другому и будем использовать сторонние средства для тонкой настройки блокировки экрана.

Способ 1. Модуль Xposed

Этот способ требует наличие на устройстве ROOT-прав и установленной специальной среды выполнения Xposed Framework. Модуль, который нам необходимо подключить к Xposed Framework, называется Stay Awake – Keep On Screen. Он позволяет легко отключать блокировку экрана на определенных приложениях и возвращаться к предыдущим настройкам тайм-аута экрана.

Как загрузить и установить Stay Awake – Keep On Screen:

    Запустите приложение Xposed Installer и выберите раздел «Загрузка».


Использование этого модуля удобно тем, что он запоминает, в каких приложениях вы отключили тайм-аут экрана, и можно в любой момент вернуть все обратно простым нажатием кнопок громкости. Работает эта функция даже на уровне родного лаунчера.

Способ 2. Приложения

Утилита умеет работать со всеми установленными на устройстве программами, включая системные службы. Преимуществом Keep Screen On является простота использования и тот факт, что приложение абсолютно бесплатное и не содержит рекламы.



Стоит признать, Stay Alive! выполняет свою основную задачу на 5+. Приложение не просто запрещает устройству уходить в спящий режим, а предлагает индивидуальные настройки для различных условий. Например, можно запретить экрану выключаться при зарядке, при подключении к автомобильной док-станции или вообще полностью отключить тайм-аут экрана. Помимо этого, Stay Alive! может приостанавливать свое действие, когда заряд батареи достигает заданного процента.

Среди дополнительных функций есть очень полезная опция «Allow the screen to dim», которая позволяет затемнять экран, но не выключать его полностью.

Единственный недостаток Stay Alive! – это платные функции, самой важной из которых является автозагрузка приложения. Так что, если вы пользуетесь бесплатной версией, вам придется каждый раз после включения/перезагрузки устройства вручную запускать утилиту.

А как вы настраиваете тайм-аут экрана вашего мобильного устройства? И приходилось ли вам запрещать экрану отключаться в определенных программах?

Возможно у Вас есть свои мнения на тему «Как включить часы в спящем режиме Android»? Напишите об этом в комментариях.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock
detector