Android 以 root 身份管理打盹模式

Android Doze mode management as root

我正在开发一个应用程序,如果它具有 root 访问权限,该应用程序将完全接管 phone。该应用程序以设定的时间间隔拍照,并将它们上传到 ftp 服务器。它的用例是将旧的 phone 变成安全摄像头,或者一般用于延时摄影。我也在尝试尽可能多地节省电量,以便 phone 可以通过太阳能 USB 充电器在偏远地区使用。

理想情况下,phone 应该每分钟左右使用 setAndAllowWhileIdle() 唤醒一次,拍张照片,然后去睡觉。每拍摄x张后,关闭飞行模式,连接网络,上传照片,开启飞行模式。

我的问题是,一旦我使用 "dumpsys deviceidle force-idle" 强制 phone 打瞌睡模式,setAndAllowWhileIdle() 就会变得非常不准确。为接下来的 20 秒设置的闹钟甚至可以在 15 分钟内到达。

我想知道是否有任何方法可以将空闲维护 window 设置为我想要的任何时间间隔,以便我可以在合理的时间收到警报。或者如果有任何其他方式作为 root 来获得可靠的警报(可靠的分钟精度)。或者,如果我可以将整个 phone 暂停一段时间。

好的,经过大量阅读和试验,我找到了神奇的解决方案。这不是我想要的,因为我不能只允许我的应用程序更频繁地在休眠模式下唤醒。我只能在全球范围内更改它,因此所有应用程序都可以这样做。但是由于我的特定需要我可以删除所有不需要的应用程序,所以它工作得很好。

解决办法是这样的:“su -c settings put global alarm_manager_constants allow_while_idle_long_time=20000,allow_while_idle_whitelist_duration=30000”

可以通过这种方式修改其他警报设置,您可以通过执行“dumpsys 警报”查看它们