Управление режимом Android Doze от имени root

Я работаю над приложением, которое должно полностью взять на себя управление телефоном, если у него есть root-доступ. Приложение делает снимки с заданным интервалом и загружает их на ftp-сервер. Его можно использовать для превращения старых телефонов в камеры безопасности или для цейтраферной фотографии в целом. Я также стараюсь экономить как можно больше энергии, чтобы телефон можно было использовать в удаленных местах с помощью USB-зарядного устройства на солнечных батареях.

В идеале телефон должен просыпаться каждую минуту или около того с помощью setAndAllowWhileIdle(), делать снимок и засыпать. После того, как будет сделано каждое x количество снимков, он отключит режим полета, подключится к Интернету, загрузит фотографии и включит режим полета.

Моя проблема в том, что как только я заставляю телефон переходить в спящий режим, используя «dumpsys deviceidle force-idle», setAndAllowWhileIdle() становится очень неточным. Будильник, установленный на следующие 20 секунд, может прийти даже через 15 минут.

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


person Radu    schedule 18.06.2020    source источник


Ответы (1)


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

Решение такое: su -c settings поставить глобальные alarm_manager_constants allow_while_idle_long_time=20000,allow_while_idle_whitelist_duration=30000

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

person Radu    schedule 20.06.2020