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

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

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

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

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

PS:- Auto Boot работает с USB-кабелем, подключенным к ноутбуку, но не с Socket Charger

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

2- Moto e загружается при подключении к маршрутизатору (USB-порт Dongle)

9 ответов

Решение

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

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

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

fastboot oem off-mode-charge 0

Мне удалось заставить его работать, обновив 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 flash boot new-boot.img

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

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

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

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

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

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

Для телефона Lenovo A2010 работали следующие:

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

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

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

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

С уважением

Хади

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

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

Я нашел другой способ для этого (спасибо 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)

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

Однако я заставил его работать. Я скопировал / system / bin / reboot в /system/bin/charge_only_mode, и это помогло.

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

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());
            }
        }
}
Другие вопросы по тегам