3

我正在使用 android 平板电脑(运行在 4.2.2 上的 iBall)开发一个独立的信息亭。它里面有中文 MTK。

假设当没有电源时,最终标签的电池将耗尽并且没有剩余的汁液。当电源恢复时,我希望标签自动启动而无需任何手动干预。我在网上看到如果我们修改现有代码在电池动画文件中我们可以实现这一点。同样,我将位于“/system/bin”的名为“ipod”的电池充电动画文件的原始代码替换为:

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

但是,当我的选项卡关闭并停靠时,它并没有启动,而是卡在了充电标志上。当我将上面的代码替换为:

    /system/bin/reboot

我的标签在关闭和停靠时确实启动了。这意味着我的代码卡在了 '#!/system/bin/sh' 。可能是什么原因?

此外,在使用上述过程启动选项卡时,我想在延迟后启动它,为此我使用了

    sleep 20
    /system/bin/reboot

但是在启动过程中没有延迟(无论我给出的睡眠值如何) 我如何创建这个延迟?

PS:我给了文件777权限;所有者根;组壳。请协助。非常感谢!

4

3 回答 3

2

找到我的命令没有执行的原因。原因是因为,我在 Windows 上的记事本 ++ 上进行编辑,直到我在 SO 上遇到了这个答案——“确保你的文本编辑器没有为每个新行添加 /r /n 而只添加 /n。这是典型的如果您在 windows 上编写脚本。使用记事本++(windows)并转到编辑|EOL 约定|UNIX 然后保存它。“所以我根据上面的答案更改了我的约定并运行我的代码并得到了所需的结果。

于 2014-11-12T03:51:39.250 回答
1

我还需要在插入充电器时使设备(alcatel9002x)自动启动,并提出替换 ipod 文件的解决方案。它运行原始的 ipod 二进制文件,同时模拟按下电源按钮。我看到充电动画,但之后,它会“正常”加电。

您可能可以使用脚本执行此操作,但我使用的是 .c 二进制文件。解决方案:

move /sbin/ipod to /sbin/ipod.backup

并将此代码用作新的二进制 /sbin/ipod

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include <unistd.h>

void run_cmd(char *s)
{
    FILE *handle;
        char buf[64];
        size_t readn;

    handle = popen(s, "r");

    if (handle == NULL) {
        return;
    }

    while ((readn = fread(buf, 1, sizeof(buf), handle)) > 0) {
        fwrite(buf, 1, readn, stdout);
    }

    pclose(handle);

}

int main(void)
{
    FILE *handle;
        char buf[64];
        size_t readn;

    pid_t pid = fork();


    if (pid == 0)
    {
        for(int i=0;i<10;i++)
        {
            run_cmd("/system/bin/sendevent /dev/input/event0 0001 116 1");
            run_cmd("/system/bin/sendevent /dev/input/event0 0000 0000 00000000");
            run_cmd("/system/bin/sleep 2");
            run_cmd("/system/bin/sendevent /dev/input/event0 0001 116 00000000");
            run_cmd("/system/bin/sendevent /dev/input/event0 0000 0000 00000000");
            sleep(1);
        }
    }
    else
    {   
        run_cmd("/system/bin/sleep 2");
        run_cmd("/system/bin/ipod.backup");
    }

    return 0;
}

我已经用 arm-linux-androideabi-gcc 编译了它。正如我所说,您可能可以在 bash 脚本中执行此操作,但这就是它对我的工作方式。

不要忘记chmod 667chown root:shell二进制文件。

于 2018-09-22T17:41:54.700 回答
0

索尼 Xperia GO中,文件名为“ chargemon ”,只有重命名才能完成任务(插入后智能手机将重新启动)。(可能其他索尼品牌智能手机相同或相似)

于 2016-03-04T14:36:47.277 回答