Android:以编程方式打开设备

时间:2016-01-04 22:29:51

标签: android boot battery

我将智能手机连接到太阳能充电器。 白天,它正确供电。但是在夜晚,由于缺乏能量,它有时会自动关闭。

我的问题是:当电池电量超过一定百分比时,可以将其重新打开(以编程方式)? 我正在寻找一种干净合法的方式。我对缺陷或漏洞不感兴趣。 我在官方文档中找不到任何内容。谢谢。

6 个答案:

答案 0 :(得分:6)

执行此操作的机制依赖于更换电池动画脚本,该脚本在设备关闭但插入时运行,通常显示充电电池的图标。脚本的名称因设备而异,但通常位于Array ( [sets] => Array ( [0] => stdClass Object ( [name] => test 1 ) [1] => stdClass Object ( [name] => test 2 ) [2] => stdClass Object ( [name] => test 3 ) ) ) 目录中。三星设备通常会调用脚本/system/bin,我见过的脚本的其他名称包括playlpmipodlpm。这不一定适用于每个设备,因为这远远超出了标准的Android框架 - 某些设备可能没有相应的脚本,或者它们可能以不同的方式实现它。

这可以被描述为“漏洞利用”,因为它需要root并且在Linux级别而不是Android框架级别工作,但目前没有其他方法可以实现此行为。

此处描述了进行此更改的一般机制:https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected。当然,在执行任何此操作之前,最好备份之前的电池动画脚本。

以下脚本适用于多种设备(多个Samsung设备和Verizon Ellipsis 7)。基本上,它会检查手机是否已插入交流电源并且电量是否充足。如果是这样,它会启动。如果没有,它等待N秒并再次尝试。作为副作用,原始电池动画脚本将无法运行,您将永远不会看到漂亮的充电动画。

battery_charging

答案 1 :(得分:2)

我没有一个不依赖硬件的解决方案,也不涉及设备的生根。

这个答案只是为了澄清一些误解。

"设备已关机,无法在其上运行任何类型的软件"

这既是真的,也是假的。首先,没有任何现代设备能够真正脱离"关闭。有时,关闭按钮仅用于显示(例如您的电视)。有时处理器确实断电,但主板上的附加电路仍然以涓流电流供电。其次,该附加电路可以在某些情况下为处理器和其他电路供电,例如在某些外部事件上唤醒(例如插入充电线),或者当处理器外定时器达到零时。

真正关闭现代设备(如智能手机)的唯一方法是取下电池和电源线。即使有时也不能像小电池那样工作,或者母板上可能存在低漏电容,以保持一些工作状态。

答案 2 :(得分:1)

在没有设备生根的情况下无法实现

答案 3 :(得分:0)

如果设备断电,则无法在其上运行任何类型的软件。

答案 4 :(得分:0)

启动设备是一项硬件任务,必须有物理电源才能运行设备(此处按下电源按钮)。那么你不能用代码做到这一点。应该有一种体力。

答案 5 :(得分:-1)

上次我检查生根是"合法"并且必须这样做。

例如,此文件#include <type_traits> #include <utility> template <typename T> using has_s_t = decltype(std::declval<T>()->s); template <typename RandomIt> void some_process(RandomIt first, RandomIt last) { static_assert(std::is_detected_v<has_s_t, RandomIt>, "Iterator must point to an object with member `s`"); } 可能位于您的设备上。编辑它以包含

/system/bin/battery_charging

并设置一些权限

#!/system/bin/sh
/system/bin/reboot

从这里采取:https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected