Включение телефона при подключении зарядки

Обновлено: 19.09.2024

Сразу оговорюсь: первая часть (автовключение) темы не относится к андроидбоксам, на них, в виду отсутствия батареи, автовключение можно реализовать только аппаратно, или покупать такой, который включается при подаче питания.

Итак, суть вопроса: включить (полная загрузка) планшет/смартфон в момент подачи зарядного тока, и отключение при отключении от зарядки (важно для встроенных планшетов).


Немного теории.
Когда вы подключаете выключенный планшет/смартфон к ЗУ, происходят следующие события: просыпается процессор; происходит инициализация бутлоадера; происходит начало загрузки init; стартует главный стартовый скрипт /init.rc; в init.rc есть секция on charger, в которой прописаны нужные действия и запуск системного процесса, который и отвечает за отображение батарейки с процентами, которую мы и видим на экране.
Итак, как мы видим, происходит частичная загрузка системы. Процесс в секции on charger всегда указывает на какой-то исполняемый файл (бинарник) лежащий где-то в системе. Выглядит примерно это так:
В init.rc объявлен сервис типа charger: service charger /system/bin/charger

Ок. Бинарник мы нашли, переименовать во что-то другое, а под его именем создаем скрипт (без расширений, в точности как назывался сам бинарник) с таким содержимым:

Сохраняем и присваиваем ему права 755. Все. Аппарат будет включатся и ребутится в андроид сразу после подачи напряжения.

Тут еще можно добавить секцию, в которой можно описать автозапуск каких либо программ по умолчанию в авто. Хотелось бы узнать каких? И по какому условию (как определить, что ваш аппарат находится именно в машине, вариантом может быть подключение какого-то оборудования, ГПС например, или запуск какой-то программы, любые другие события, придумайте), попробую реализовать?

Вторая часть - выключение при пропадании напряжения зарядки.

а в файл defaul.prop или /system/build.prop в самом низу дописать строку sys.initd=1
Аналогичным init.d образом работает папка со скриптами /system/su.d, если у вас рут на основе SuperSu. Тогда бут разбирать не надо.
В любом случае, в системе должен быть установлен busybox, иначе скрипты работать НЕ БУДУТ!

Итак, init.d, busybox у нас есть. Создаем скрипт с таким содержимым:

Помещаем его в папку /system/init.d или /system/su.d с любым названием и присваиваем ему права 755. Нужно помнить, что скрипту не нужно присваивать никакое расширение имени файла, в том числе и sh. Не выполняются в init.d скрипты, имеющие расширение имени файла. После перезагрузки, планшет будет выключаться автоматически, при пропадании напряжения зарядки. Скрипт безусловен, работает по умолчанию.

Ниже рассмотрим примеры условного выключения, и варианты самих условий. Хотелось бы от Вас услышать возможные условия автоматического выключения, например по наличию подключенной EasyCAP, DAC и тому подобное. Как Вы считаете нужным идентифицировать наличия подключения к машине, соответственно важность автоматического выключения? Жду советов, по возможности, попробую реализовать условия.


Здесь процесс решения и результат, а не только готовый результат.

Прежде всего хочется сказать, что если в интернете нет готового решения для конкрентного телефона, то нужно копаться в коде, а если не понимать что код делает, то ничего не получится. К счастью если на информатике были азы delphi или чего-то подобного и знать основы if else, то разобраться и сделать можно.

Расписываю не только мой метод, но и пути решения, так как когда я сам искал способ, то очень помогали решения и домыслы других в построении схемы работы этого всего.

Сначала метод №1 c fastboot, который у меня не получился:
fastboot oem off-mode-charge 0

Далее метод №2 по парвке загрузчика.

Получаем boot.img

boot.img получен, ура, теперь его нужно разобрать.

Распаковка boot.img

Сначала сложный способ, затем лёгкий :)

СЛОЖНЫЙ для windows юзера:

Есть такой split_bootimg.pl на перл. Для split_bootimg.pl (разбивалка бута) требуется perl, в принципе можно поставить на windows и из винды запустить разбивалку бута, но собиралки, то нет( поэтому есть более правильный способ через cygwin (описание на русском на хабре очень хорошее) — в нём можно работать как в linux (либо если нет возможности скачать и поставить cygwin можно запустить виртуалку virtualbox или сервак) так:
-разбираем boot или с помощью split_bootimg.pl или с помощью unpackbootimg+mkbootimg (найти можно легко по имени файла, например тут), можно воспользоваться инструкциями например такой инструкцией

ЛЁГКИЙ для windows юзера:
На 4pda парень молодец сделал суперлёгкую программу для windows, которая разбивает и собирает бут. Качаем, читаем описание как работать =>boot.img разбит! ramdisk получен!

Правка системных файлов в boot.img (точнее в ramdisk):

Итак начинается самое муторное если нет конкретного решения под конкрентный телефон. А всё потому, что поправив код проверить можно только подключив зарядник, а отладки и логов я не нашёл и если не работает, то не поймёшь почему не работает.

Сначала работал вот с этим кодом в init.star.rc (в разных телефонах называется по разному, но шаблон у всех у них один init.XXX.rc):

(НАЗОВУ ЭТО сервисом charger)

service charger /charger
class charger
user root
group root
oneshot

По коду: сервис charger: класс charger запускает файл /charger

Пробовал (не помогло, забегая вперёд напишу что если бы знал про монтирование /system, то часть вариантов сработало бы):
— с работающего телефона скопировал через root explorer себе файл reboot из /system/bin/reboot (нужен root) и затем подменил файл /charger в корне ramdisk
— вместо "/charger" писал "/sbin/reboot" а в /sbin/ копировал reboot файл, играл с правами на него
— вместо "/charger" писал "/system/bin/reboot"
— вставлял дополнительные строки (от пользователей с 4pda): on property:ro.bootmode=charger…(далее много кода, это только начало) и тд
Всё это не приносило успеха, но по совету по on property:ro.bootmode=charger как я вижу сейчас есть доля истины, так как в полном коде есть монтирование /system — забегая вперёд скажу что монтирование /system — это развязка.

Задался вопросом почему charger исполняется, а reboot нет. Иметь бы исходники их. Права одинаковые. Видимо внутри функции в reboot не исполняются, но почему?

Ну и на 3-ий день с утра я уже держал в голове, что начну я с того, что возьму весь код в другом файле уже init.star.model.rc (обратил на него внимание потому что в нём много монтирований похожих на загрузку ос) из строки функции:

(ВСЕ on — НАЗОВУ ФУНКЦИЕЙ ДЛЯ УДОБСТВА)

on fs
(там ниже идёт куча монтирований всех систем и ещё всего при загрузке ОС) — думаю ОС при моей функции:
on charger
должно выполнить всё то же что и при загрузке ОС чтобы мой reboot работал точно и вставил всё что ниже функции:
on fs
в мою функцию:
on charger
и так как там в функции on fs было exec /system/bin/какой-то_бинарник, то попробовал его заменить на exec /system/bin/reboot
и при подключении зарядки телефон перезагрузился! То что я обрадовался — это ничего не сказать:)
Далее построчно поудалял строки и выявил, что главное это монтирование /system:
mount ext4 /dev/block/mmcblk0p1 /system wait ro

/dev/block/mmcblk0p1 — у разных прошивок может быть свой! Чтобы узнать его нужно на работающем телефоне в терминале (Terminal Emulator в play market) на рутованном телефоне глануть точки монтирования (fstab ещё в linux называется):
cat /proc/mounts
и найти строку по /system

То есть главное ДОЛЖЕН БЫТЬ ПОДМОНТИРОВАН РАЗДЕЛ /system

Всё это будет работать только если подмонтирован /system

2-х дневная разработка сократилась бы в 100 раз если бы я сообразил про монтирование с самого начала, потому что все мои попытки правки и класса charger и функции on charger работали бы в большинстве вариантов если бы при этом был подмонтирован /system.

PS: при решении вопроса уже ближе к концу мне не давал покоя умный тезис из интернета:
"Файл charger — это небольшое приложение, единственная задача которого — вывести на экран значок батареи. Он не имеет никакого отношения к Android и используется тогда, когда устройство подключается к заряднику в выключенном состоянии. В этом случае загрузки Android не происходит, а система просто загружает ядро, подключает RAM-диск и запускает charger. Последний выводит на экран иконку батареи, изображение которой во всех возможных состояниях хранится в обычных PNG-файлах внутри каталога res." размышляя над которым я пытался сначала скопировать в бут всю папку /system/bin а потом уже перешёл на более простой метод монтирования.

У водителей часто возникает вопрос о том, как настроить автоматическое включение смартфона или планшета при подключении к источнику питания. Многие пытаются сделать видеорегистратор из своего устройства. В статье мы рассмотрим рабочий метод, который позволит настроить автоматическое включение при зарядке устройства. Также вам может понадобиться статья Как сделать видеорегистратор из своего телефона.

включение при зарядке

Как настроить включение при зарядке устройства

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

Включение при зарядке работает только в случае, если у вас настроены root-права.

Включение при зарядке устройств с ОС Android 4.2 и ниже

Важным нюансом при осуществлении данного метода будет версия вашей операционной системы. На версиях выше Android 4.2 метод включения при зарядке может не сработать. На версиях от 4.4 после изменения файла может произойти ошибка – от подачи питания возникнет статичное изображение процесса зарядки и включение при зарядке не происходит.

включение при зарядке

Не забудьте сделать резервное копирование для бэкапа.

Для реализации включения при зарядке необходимо перейти по пути /system/bin/ipod и открыть файл ipod.

Откройте этот файл с помощью текстового редактора, например, с помощью Блокнота или Notepad++.

После открытия замените всё его содержимое на код:

Включение при зарядке устройств с ОС Android 4.4 и выше

Этот метод также подходит для устройств Samsung, но с версией операционной системы 4.4 и выше. Прежде всего, сделайте полное резервное копирование для бекапа.

Подготовка

Подключите гаджет через USB к вашему компьютеру.

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

  • Программа Android Image Kitchen
  • Текстовый редактор Notepad++
  • Программа Total Comander
  • 7zip

На смартфон установите Total Comander.

включение при зарядке

Работа с компьютером

Следуйте этому руководству шаг за шагом для того, чтобы не допустить ошибок и правильно настроить включение при зарядке:

  1. Загрузите любую пользовательскую прошивку
  2. Распакуйте её с помощью 7zip в любую удобную для вас папку
  3. Создайте отдельную папку и переименуйте её в CM Boot
  4. Найдите в распакованной пользовательской прошивке файл boot.img

Далее алгоритм действий немного повторяется. Вам следует из папки CM Boot продублировать файл boot.img в папку с установленной программой Android Image Kitchen, затем, не закрывая папку Android Image Kitchen, зажмите левую клавишу мышки на файле boot.img и перетащите его прямо на иконку unpackimg.bat.

На всякий случай нужно скопировать и неотредактированное ядро boot.img на случай, если девайс не загрузится.

Работа с телефоном

Загружаем Total Commander на устройство в директорию system/bin. Создаём дубликат любого файла в той же папке и меняем его имя на lpm. Открываем файл, который мы только что создали, через текстовой редактор и удаляем в нём всё. Вместо удалённого содержания, пишем следующие строки:

Копируем файл lpm по пути system/bin, устанавливаем права доступа 755 для этого файла.

Устанавливаем новое ядро через Recovery.

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

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

включение при зарядке

Всем доброго времени суток. Есть телефон, из которого я хотел бы сделать видео-регистратор для моего автомобиля. Програмку то написал, которая будет видео записывать, сохранять и т.д. Но как сделать так, чтобы телефон включался при подключении USB-зарядки, провод которой вставлен в розетку 220B?

ROOT доступ полный. Модель телефона - ZTE Blade Q Lux 3G PRO . Android 4.4.2.

и добавить строчки включения системы:

Пробовал менять всё содержимое на эти строки в следующих файлах:

  • /system/bin/bootanimation
  • /system/bin/ipod
  • /system/bin/chcon

Безрезультатно. Может какие-то другие файлы надо изменить? Или вообще в другой папке копаться надо? Подскажите.

Когда попробовал проделать такой трюк с файлом /system/bin/chcon у меня перестала работать кнопка отключения дисплея. То есть, короче, как я включил телефон, так дисплей и работает, не отключается и не реагирует на кнопку выключения. Только после восстановления прежнего файла всё стало нормально после перезагрузки телефона. Так что делаю вывод, что автоматическое включение реализовать возможно. Каждый системный файл действительно запускает скрипты, каждый свой, и отвечает каждый сам за себя. Необходимо лишь понять где нужный файл анимации заряда батареи телефона и где в нём именно надо вписать команду включения.


2,452 5 5 золотых знаков 25 25 серебряных знаков 54 54 бронзовых знака

Для того, чтобы телефон запускался при подключении зарядки необходимо выполнить следующие действия.

и после них ниже пишем:

Сохраняем и закрываем оба файла. Возвращаемся в консоль. Пишем следующую команду:

Запускаем программу Adb Run. По умолчанию она устанавливается в C:\adb\ . Выбираем пункт 5, затем 0. Телефон должен войти в режим Fastboot. Затем выбираем пункт 1, и затем 1. В консоли должны отобразится как минимум две строки:

Если вы видите только это:

то у Вас могут быть следующие ошибки:

  • Не включена отладка USB в режиме разработчика
  • Некорректно подключён USB-провод или, возможно, повреждён
  • В диспетчере устройств (Правой кнопкой мыши по ярлыку "Мой компьютер"; Свойства; Диспетчер устройств) телефон отображается как неизвестное устройство, например, как на скриншоте здесь

Затем выбираем пункт 5, затем 0. Ждём, когда на экране телефона появится надпись FASTBOOT mode.. или что-то наподобие. Выбираем пункт 7, затем 1, и затем пишем:

Ждём, когда в консоли появится надпись Done. в конце в случае успешной установки boot.img . Затем опять пишем в консоли:

Закрываем программу Adb Run (консоль). Отключаем телефон от компьютера. После загрузки телефона выключаем его. Подключаем телефон к зарядке 220В, и, в течение 10 секунд телефон сам включится. На этом всё готово.

Если у Вас произошли какие-то ошибки или что-то пошло не так, я прошу написать в комментариях. Буду рад помочь!

Я хочу ещё дать людям совет: Если с первой попытки выполнить процедуру не получилось по какой-либо причине, попробуйте ещё несколько раз внимательно выполнить все выше перечисленные действия.

Если версия Android - 4.4 и выше, то могут возникнуть ошибки и, возможно, ничего не получится. Как мне, например, ответила поддержка корпорации ZTE на вопрос "возможно ли хоть как-то реализовать автовключение телефона при. " мне ответили, что видите ли на данном лаунчере такая функция недоступна. И я понял, что решить проблему можно лишь откатом версии Android с 4.4 на 4.2.

Читайте также: