Автоматическая загрузка при подключении зарядного устройства к стене

Я разрабатываю приложение для Android, где требуется 3 вещи: -

  • Чтобы приложение было запущено в определенное время, а затем телефон отключится ( "Работает хорошо" )
  • Когда телефон получает зарядку от розетки, я хочу, чтобы телефон автоматически включался, не нажимая кнопку питания. (Не работает с настенной розеткой, но работает при подключении к USB-кабелю через ноутбук).
  • После загрузки мое приложение должно начать работать автоматически (работая отлично)

Вы должны знать: - Мой телефон Moto E (коренится) и хочет выполнить второй шаг. Пробовал некоторые коды, но это не работает на moto E. Когда он подключен к USB, он дает 2 в качестве ответа и при подключении к зарядному устройству настенной розетки говорит 1

Любая помощь будет оценена

P.S: - Автозагрузка работает с USB-кабелем, подключенным к ноутбуку, но не с зарядным устройством Socket

Update-1: 1 - Найден fastboot oem off-mode-charge 0, работающий с Nexus 7, но не на Moto e.

2- Автонастройка при подключении к маршрутизатору (порт USB-кабеля)

Ответы

Ответ 1

Наконец-то я получил решение, вы можете добиться этого, удалив файл system/bin/charge_only_mode. Пожалуйста, сделайте это на свой страх и риск, и перед удалением выполните резервное копирование этого файла. Я получил желаемый результат, который был загружен, когда он подключен к зарядному устройству на стене и теперь работает нормально. Все самое лучшее!

Ответ 2

Мото е4 и Пиксель 2 XL:

Загрузите ваше устройство в загрузчик (fastboot) и выполните следующую команду с компьютера, подключенного через USB с помощью Android Tools:

fastboot oem off-mode-charge 0

Ответ 3

Я также попытался заменить charge_only_mode на sh script, который перезагрузил телефон, но получил только красный круг с M (на Motorola Bionic). Изменив script на ниже, он начал работать... Теперь я получаю красный круг с M в течение нескольких секунд, затем пустой экран, другой красный круг с M, и он загружается вверх.

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

Ответ 4

На моем устройстве Lenovo K7000-Plus необходимо изменить файл kpoc_charger, расположенный в /system/bin.

Файл Ipod не работает на моем телефоне, который использует Android 6.0 ROM, но kpoc_charger работает pefectly.

Привет

Хади

Ответ 5

Для телефона Lenovo A2010 после работы:

  • Используйте приложение для управления файловым телефоном из PlayStore, например Total commander (на корневом телефоне), чтобы перейти в папку /system/bin/
  • Скопируйте файл kpoc_charger и вставьте его туда как kpoc_charger.bak
  • Теперь отредактируйте исходный файл kpoc_charger с помощью total-commander, замените все строки следующим кодом:

    #!/system/bin/sh
    /system/bin/reboot
    
  • Сохраните его, свойства goto и измените UID: 0 root, оболочка GID: 2000 и разрешение 755 (такие же, как свойства других файлов в папке /system/bin ).
  • Теперь выключите телефон и подключите его к зарядному устройству.
  • Bazinga!!!! значок батареи отображается в течение секунды, но телефон успешно загружается в os.

Ответ 6

Когда телефон заряжается от розетки, я хочу, чтобы телефон включался автоматически, не нажимая кнопку питания. (Не работает со стеной Socket, но работает при подключении к USB-кабелю через ноутбук).

Вы можете добиться этого только путем изменения файлов ОС телефона. В основном есть boot script/binary at /system/bin/chargemon, который вы можете заменить с помощью script, который ничего не делает. Сделайте это на свой страх и риск, потому что это может привести к повреждению устройства навсегда. Кроме того, гарантия производителя станет недействительной.

Ответ 7

Я нашел другой способ для этого (спасибо DavidThompson256 http://forum.xda-developers.com/showthread.php?t=1187631)

Сначала убедитесь, что ваш телефон укоренен (что я нашел iRoot очень хорошо для этого), а затем установите RootExplorer.apk(или аналогичный) на свой телефон.

Попробуйте отредактировать "/system/bin/playlpm" и замените его содержимое на следующие команды: (не забудьте сначала сделать резервную копию).

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

(Я знаю, что содержимое находится в двоичном формате, просто удалите их и напишите эти две строки и сохраните файл)

ПРИМЕЧАНИЕ. При изменении этого файла изменения не будут применяться к его разрешениям, но если вы делаете другой файл, помните, чтобы устанавливать разрешения точно так, как было.

Наконец, пожалуйста, сделайте это на свой страх и риск. Это сработало для меня. (Samsung Discovery S730M)

Ответ 8

Может кто-нибудь помочь! Я пытаюсь заставить автозагрузку работать на Samsung Tablet A (T550). У меня есть root. Пробовал редактировать файл lpm, как упоминали многие сайты. Пробовал переименовывать перезагрузку в charmon, в charger_monitor.

Любая помощь приветствуется. Финансовое вознаграждение даже. Становится отчаянным.

Ответ 9

Я смог заставить его работать, обновив файл init.rc

Я нашел триггер on charger и добавил следующие строки под ним:

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

Примечание. Это исправление приведет к перезагрузке устройства при подключении к нему, даже если его выключить с помощью кнопки питания или программного отключения.

Источник: https://forum.xda-developers.com/showthread.php?p=77766638#post77766638

Вы можете увидеть коммит, который содержит эти изменения для моего проекта здесь:

https://github.com/darran-kelinske-fivestars/mkbootimg_tools/commit/c8633a2ec2e1924272fd16a8ed7fa7414bb65544#diff-d0007d763b44198f7c22e2c19609d5bbR606

Ответ 10

Я думаю, что должен быть датчик мощности, если вы можете добавить, что в этом коде я верю, что он будет работать

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());
            }
        }
}

Ответ 11

Итак, я пытался добиться этого с помощью третьего поколения Moto G. У него есть файл charge_only_mode в соответствии с ответом Rohit, но простое перемещение/переименование не привело к перезагрузке телефона. Вместо этого он просто сидел там с логотипом Motorola. Я получил тот же результат при замене charge_only_mode с помощью любого из приведенных здесь сценариев.

Я действительно получил его на работу. Я скопировал /system/bin/reboot в/system/bin/charge_only_mode, и это сделало трюк.