【问题标题】:Automatically boot-up MTK devices (non-samsung) when docked对接时自动启动 MTK 设备(非三星)
【发布时间】:2014-11-12 03:08:27
【问题描述】:

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

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

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

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

    /system/bin/reboot

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

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

    sleep 20
    /system/bin/reboot

但是在启动过程中没有延迟(不管我给出的 sleep 值) 如何造成这种延迟?

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

【问题讨论】:

  • 你知道如何在 Android 4.4 上实现同样的功能吗?

标签: android linux linux-kernel android-kernel android-reboot


【解决方案1】:

找到我的命令没有执行的原因。 原因是,我在 Windows 上的记事本 ++ 上进行编辑,直到我在 SO 上遇到这个答案 - " 确保您的文本编辑器没有放置 /r /n 并且每个新行只放置 /n。如果您在 windows 上编写脚本,这很典型。使用 notepad++ (windows) 并转到编辑|EOL 约定|UNIX然后保存。” 所以我根据上面的答案改变了我的约定并运行了我的代码并得到了想要的结果。

【讨论】:

  • 你能把你的 ipod 文件上传到某个地方吗?
  • 即使在编辑ipod 文件后,它似乎在进程中执行了2 个电池动画文件。如果我将 NTC 电池 PIN 接地,它将启动 ipod 文件,但启动会被电池动画中断。如果我将 NTC 接地但在屏幕背光亮后立即将其移除,它将正常启动。你有过这样的经历吗?
  • 非常感谢,顺便说一句。 :)
  • @Holmes:嗯,不,抱歉我没有遇到这样的问题。
【解决方案2】:

我还需要在插入充电器时让设备 (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二进制文件。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 2012-05-14
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多