Android 插入壁式充电器时自动启动

Android 插入壁式充电器时自动启动,android,su,Android,Su,我正在开发一个Android应用程序,它需要3件事:- 在特定时间内保持应用程序运行,然后手机将关闭(工作正常) 当手机从插座充电时,我希望手机在不按任何电源按钮的情况下自动通电。(不使用墙上的插座,但通过笔记本电脑连接到USB电缆时工作)。 启动后,我的应用程序应自动开始工作(工作正常) 你必须知道:- 我的手机是Moto E(根),希望完成第二步。尝试了一些代码,但在moto E上不起作用。 当与USB连接时,它给出2作为响应,当与墙壁插座充电器连接时,它显示1 任何帮助都将不胜感激 注意:

我正在开发一个Android应用程序,它需要3件事:-

  • 在特定时间内保持应用程序运行,然后手机将关闭(工作正常)
  • 当手机从插座充电时,我希望手机在不按任何电源按钮的情况下自动通电。(不使用墙上的插座,但通过笔记本电脑连接到USB电缆时工作)。
  • 启动后,我的应用程序应自动开始工作(工作正常)
  • 你必须知道:- 我的手机是Moto E(根),希望完成第二步。尝试了一些代码,但在moto E上不起作用。 当与USB连接时,它给出2作为响应,当与墙壁插座充电器连接时,它显示1

    任何帮助都将不胜感激

    注意:-自动引导工作与USB电缆连接到笔记本电脑,但不与插座充电器

    更新-1:1-发现
    fastboot oem关闭模式收费0
    使用Nexus 7但不使用Moto e


    2-Moto e在连接到路由器(USB加密狗端口)时启动。

    我认为应该有功率传感器,如果你能在这段代码中添加,我相信它会工作

    public class Main extends Activity {
            private SensorManager mSensorManager;
            private PowerManager mPowerManager;
            private WindowManager mWindowManager;
            private WakeLock mWakeLock;
            private Button button;
            private TextView textView;
    
            /** Called when the activity is first created. */
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
    try{
                // Get an instance of the SensorManager
                mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    
                // Get an instance of the PowerManager
                mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
    
                // Get an instance of the WindowManager
                mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
                mWindowManager.getDefaultDisplay();
    
                // Create a bright wake lock
                mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass()
                        .getName());
    
                setContentView(R.layout.main);
                textView = (TextView)findViewById(R.id.textView1);
                button = (Button)findViewById(R.id.button1);
                button.setOnClickListener(mButtonStopListener);
    
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Log.e("onCreate", e.getMessage());
            }
    } // END onCreate
    
            View.OnClickListener mButtonStopListener = new OnClickListener() {
                public void onClick(View v) {
                    try {
                        mWakeLock.release();
                        textView.setText("mWakeLock.release()");
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Log.e("onPause",e.getMessage());
                    }
    
                }
            };
    
            @Override
            protected void onResume() {
                super.onResume();
                /*
                 * when the activity is resumed, we acquire a wake-lock so that the
                 * screen stays on, since the user will likely not be fiddling with the
                 * screen or buttons.
                 */
    
                try {
                    mWakeLock.acquire();
                    textView.setText("mWakeLock.acquire()");
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("onResume", e.getMessage());
                }
    
            }
    
            @Override
            protected void onPause() {
                super.onPause();
    
                // and release our wake-lock
                try {
                    mWakeLock.release();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("onPause",e.getMessage());
                }
            }
    }
    
    当手机从插座充电时,我想让手机通电 无需按下任何电源按钮即可自动启动。(不使用墙壁。) 插座,但通过笔记本电脑连接到USB电缆时工作)


    您只能通过修改手机的操作系统文件来实现这一点。基本上,在
    /system/bin/chargemon
    中有引导脚本/二进制文件,您可以将其替换为不执行任何操作的脚本请自行承担风险,因为这可能会导致设备永久损坏。此外,制造商保修也将失效。

    最后我得到了解决方案,您可以通过删除
    系统/bin/charge\u only\u模式
    文件来实现这一点。请自行承担风险,并在删除之前备份该文件。我得到了理想的结果,即开机时,它连接到墙上充电器,现在它的工作良好。
    祝你一切顺利

    我找到了另一种方法(多亏了DavidThompson256)

    首先确保你的手机是根目录的(我发现iRoot在这方面非常好),然后在你的手机上安装RootExplorer.apk(或类似的)

    尝试编辑“/system/bin/playlpm”,并用以下命令替换其内容:(不要忘记先进行备份)

    (我知道内容是二进制的,只需删除它们并写入这两行并保存文件)

    注意:当您修改该文件时,不会对其权限应用任何更改,但如果您正在创建另一个文件,请记住完全按照原样设置权限


    最后,请自行承担风险。这对我有用。(三星发现S730M)

    我还尝试用sh脚本取代仅充电模式,该脚本重新启动了手机,但只得到了一个带有M的红色圆圈(在摩托罗拉仿生手机上)。将脚本更改为下面的脚本使其正常工作…现在,我得到带有M的红色圆圈几秒钟,然后是一个空白屏幕,另一个带有M的红色圆圈,然后启动

    #!/system/bin/sh
    su -c "/system/bin/reboot -n outofcharge"
    

    在我的设备Lenovo K7000 Plus上,需要修改的文件是
    kpoc\u charger
    ,位于
    /system/bin

    我的手机使用安卓6.0 ROM,Ipod文件不工作,但kpoc_充电器工作得很好

    问候


    联想A2010手机的Hadi

    如下:

  • 使用playstore中的file manager手机应用程序,如Total commander(在根目录手机上)转到文件夹/system/bin/
  • 复制文件kpoc_charger并将其粘贴为kpoc_charger.bak
  • 现在使用total commander编辑原始文件kpoc_charger,将所有行替换为以下代码:

    #!/system/bin/sh
    /system/bin/reboot
    
  • 保存它,转到属性并将UID:0 root、GID:2000 shell和权限更改为755(与/system/bin文件夹中其他文件的属性相同)
  • 现在关闭手机并插入充电器
  • 巴辛加!!!!电池图标会显示一秒钟,但手机已成功启动操作系统

  • 因此,我试图用第三代Moto G实现这一点。根据Rohit的回答,它有一个仅充电模式文件,但仅仅移动/重命名它并不能使手机充电后重新启动。取而代之的是,它只是挂着摩托罗拉的标志。当我用这里引用的任何脚本替换仅收费模式时,我得到了相同的结果


    然而,我确实让它发挥了作用。我将/system/bin/reboot复制到/system/bin/charge_only_模式,成功了。

    Moto e4和Pixel 2 XL:

    将您的设备放入引导加载程序(fastboot),并从通过USB与Android工具连接的计算机上运行以下命令:


    fastboot oem关闭模式收费0

    通过更新
    init.rc
    文件,我可以让它正常工作

    我在充电器上找到了
    触发器,并在其下方添加了以下行:

    setprop ro.bootmode "normal"
    setprop sys.powerctl "reboot"
    
    整个触发器块最终看起来像这样

    on charger
        class_start charger
        setprop ro.bootmode "normal"
        setprop sys.powerctl "reboot"
    
    然后需要重新打包并刷新更新后创建的启动映像

    通过USB连接设备

    打开设备电源并进入引导加载程序模式

    adb reboot bootloader 
    
    要刷新引导映像,请在fastboot中执行以下命令

    fastboot flash boot new-boot.img
    
    注意:即使使用电源按钮或软件关机将设备关闭,此修复程序也会导致设备在插入时重新启动。

    资料来源:

    您可以在此处看到包含我的项目的这些更改的提交:


    这是因为如果你将其插入笔记本电脑,它会将其用作数据线,但墙上的插座不会发送任何数据,只有电压你可以提供一些java代码吗?@Rohit你可以发布当前使用USB电缆的代码吗?对于USB,默认情况下,它在摩托罗拉EAt中工作,最后找到解决方案!和平!救济没有像chargemon这样的东西。我有charge_monitor,这个文件是编码的。当OP声明他打算在设备使用USB电缆通电时启动设备时,这将如何工作?简而言之,当设备关闭时,没有应用程序正在运行,因此您的代码甚至不会运行
    fastboot flash boot new-boot.img