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

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

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

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

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

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

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

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


person Rohit    schedule 10.10.2014    source источник
comment
это потому, что если вы подключаете его к ноутбуку, он использует его как кабель для передачи данных, но настенная розетка не отправляет никаких данных, только напряжение   -  person Boldbayar    schedule 10.10.2014
comment
Можете ли вы предоставить часть вашего кода Java?   -  person Boldbayar    schedule 10.10.2014
comment
@Rohit, можете ли вы опубликовать код, который в настоящее время работает с USB-кабелем?   -  person Andre Perkins    schedule 25.10.2014
comment
Для USB он работает по умолчанию в Motorola E   -  person Rohit    schedule 27.10.2014
comment
Наконец нашел решение! Мир! Рельеф!   -  person Rohit    schedule 12.11.2014
comment
@Rohit: Можете ли вы опубликовать решение, которое на 100% работает для вас. У меня также есть такое же требование на корневом устройстве.   -  person nagamanojv    schedule 14.11.2014
comment
@nagamanojv какое у тебя устройство?   -  person Rohit    schedule 14.11.2014
comment
@Rohit: устройство Moto-E с root-правами.   -  person nagamanojv    schedule 14.11.2014
comment
@nagamanojv: Пожалуйста, проверьте мой ответ ниже   -  person Rohit    schedule 14.11.2014
comment
Теперь все изменилось, больше нет файла типа .lpm, однако следующее может работать. forum.xda- Developers.com/galaxy-note-3/help/   -  person knreddy    schedule 11.09.2019


Ответы (10)


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

person Rohit    schedule 14.11.2014
comment
Я попытался отредактировать этот файл, перетащив его с устройства на свой компьютер, открыв его в редакторе файлов. Кажется, это двоичный файл, и я не знаю, как его редактировать. Не могли бы вы подсказать, где и что редактировать! - person nagamanojv; 14.11.2014
comment
Я просто удалил этот файл после того, как сделал резервную копию этого. Никакого редактирования ничего больше. Использовал проводник ES, а затем в Меню> Инструменты> Root Explorer (включил его), а затем скопировал этот файл куда-то, а затем удалил этот файл. - person Rohit; 15.11.2014
comment
@Rohit: Знаете ли вы команду, с помощью которой мы можем отключить подсветку на этапе загрузки (этап, на котором отображается анимация батареи)? - person Basher51; 30.12.2014
comment
Lenovo S6000-H не имеет режима system/bin/charge_only_mode или /system/bin/chargemon или /system/bin/playlpm!!! Взгляните на это android.stackexchange.com/questions/131062/. Как я могу сделать это на S6000? : - person mohammads; 13.12.2015
comment
Этот файл отсутствует на Motorola Moto E (condor) :( - person Jon Pawley; 03.04.2019

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

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

fastboot oem off-mode-charge 0

person Mad Scientist Moses    schedule 29.03.2018
comment
Работал на нексусе 4 с lineage os. Спасибо - person markist; 15.04.2020

Я смог заставить его работать, обновив файл 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

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

person dazza5000    schedule 28.08.2019


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

#!/system/bin/sh
su -c "/system/bin/reboot -n outofcharge"
person Frank N Stein    schedule 19.04.2016

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

Файл iPod не работает на моем телефоне с прошивкой Android 6.0, но kpoc_charger работает отлично.

С Уважением

Хади

person Hadi    schedule 19.08.2016

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

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

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

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

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

person S.D.    schedule 22.10.2014
comment
ничего похожего на чарджмон нет. у меня есть charge_monitor и этот файл закодирован - person Rohit; 27.10.2014

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

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

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

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

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

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

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

person Amir Dashti    schedule 19.10.2015

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

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());
            }
        }
}
person Boldbayar    schedule 10.10.2014
comment
Как это будет работать, когда ОП заявляет, что он намеревается загрузить устройство, когда оно включено с помощью USB-кабеля? Короче говоря, когда устройство выключено, ни одно приложение не работает, и, следовательно, ваш код даже не будет выполняться. Такая функциональность встроена в загрузчик перед загрузкой ОС Android. IMO, нам нужно изменить файлы уровня ядра, чтобы добиться результата. - person Basher51; 10.11.2014
comment
наконец-то я нашел решение, и теперь оно работает на 100%. - person Rohit; 12.11.2014
comment
@Rohit: Можете ли вы опубликовать решение, которое на 100% работает для вас. У меня также есть такое же требование на корневом устройстве. - person nagamanojv; 14.11.2014
comment
Да, сообщите нам о своем решении @Rohit. У меня есть root-права, и я смог удалить файл charge_only_mode, но теперь, когда я подключаюсь к настенному зарядному устройству, я просто вижу красный кружок с Moto M, и мне нужно вытащить аккумулятор для сброса. Спасибо. - person EddieB; 16.01.2015
comment
Я упомянул решение. Пожалуйста, проверьте вверху, и я использую то же самое с моими 20 устройствами Moto E. - person Rohit; 17.01.2015

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

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

person Dave    schedule 28.11.2016