Автозагрузка, когда зарядное устройство подключено
Я разрабатываю приложение для Android, где требуется 3 вещи:
- Чтобы приложение работало в течение определенного времени, телефон отключится (работает нормально)
- Когда телефон заряжается от розетки, я хочу, чтобы телефон включался автоматически, не нажимая кнопку питания. (Не работает с настенной розеткой, но работает при подключении к USB-кабелю через ноутбук).
- После загрузки мое приложение должно начать работать автоматически (работает нормально)
Вы должны знать:- Мой телефон 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
Вы можете увидеть фиксацию, содержащую эти изменения для моего проекта, здесь:
Я также попытался заменить charge_only_mode сценарием sh, который перезагрузил телефон, но получил только красный круг с буквой M (на Motorola Bionic). Сменив скрипт на приведенный ниже, он заработал... Теперь я получаю красный круг с буквой М в течение нескольких секунд, затем пустой экран, еще один красный кружок с буквой М, и он загружается.
#!/system/bin/sh
su -c "/system/bin/reboot -n outofcharge"
Для телефона Lenovo A2010 работали следующие:
- Используйте приложение для файлового менеджера телефона из playstore, например Total commander (на рутированном телефоне), чтобы перейти в папку /system/bin /
- Скопируйте файл kpoc_charger и вставьте его туда как kpoc_charger.bak
Теперь отредактируйте оригинальный файл kpoc_charger с помощью total-commander, замените все строки следующим кодом:
#!/system/bin/sh /system/bin/reboot
- Сохраните его, перейдите в свойства и измените UID:0 root, GID:2000 shell и разрешение как 755 (аналогично свойствам других файлов в папке /system/bin).
- Теперь выключите телефон и подключите к зарядному устройству.
- 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());
}
}
}