Как отключить процессор при зарядке?

Когда я подключаю источник питания USB, он заставляет ЦП оставаться включенным (даже если «Разработка-> Не спать» отключена).

При зарядке от слабого источника питания батарея разряжается еще быстрее, чем в случае с питанием от USB вообще не подключено (потому что ЦП остается включенным, а не спит).

Как остановить внешнее подключение питания, влияющее на политику спящего режима ЦП?

Я не говорю о том, что экран включен, я говорю о том, что процессор не спит (к сожалению, нелегко увидеть, включен ли процессор или выключен).

Что вы подразумеваете под «процессор остается включенным»? Ты про включенный экран? Или вы используете приложение для постоянного контроля частоты, на которой работает процессор?
У меня есть программа, которая постоянно мигает светодиодом, когда экран выключен, поэтому я четко вижу, когда (процессор включен, а экран выключен). Обычно после того, как я нажимаю кнопку питания, чтобы выключить экран, он несколько раз мигает и останавливается. Но когда зарядное устройство подключено, он продолжает мигать.
В программе: Brightact ( исходник ); Применение:brightact /sys/...led.../brightness 20 100000 400000 /sys/power/wait_for_fb_sleep
Я смотрю на предоставленный вами исходный код, и он написан на простом C. Я не уверен, что такую ​​программу можно запустить на Android. О каком устройстве идет речь (производитель, модель)? Какая ОС работает?
Большинство моих программ для Android в настоящее время написаны на C, требуют корневого доступа и напрямую взаимодействуют с ядром Linux (в настоящее время я больше Linux-хакер, чем Android-хакер). Я использую Android 2.3 на Sony-Ericcson Xperia X10.
Вы проверили, что произойдет, если вы не запустите свою программу во время зарядки? Батарея все-таки садится?
1. Android не должен слишком знать об этой программе и ее не трогать /sys/power/wake_lock; 2. Даже без программы замечаю, что когда зарядное устройство штатно подключено, но не заряжается (например там всего около 3В вместо 5В), оно быстрее разряжается (примерно с такой же скоростью, как если бы какое-то приложение держало CPU wakelock).

Ответы (2)

Нажмите и удерживайте кнопку выключения питания при подключении к сети, затем нажмите на запрос выключения питания. Когда он выключится, убедитесь, что индикатор зарядки продолжает гореть. Если индикатор не горит, нажмите кнопку питания быстро, чтобы процент заряда батареи отображался в центре, он должен снова погасить экран, а индикатор зарядки загорится и останется гореть. Вы можете повторно проверить процент заряда батареи в любое время. Когда будете готовы к использованию, нажмите и удерживайте кнопку включения/выключения питания, чтобы включить, и наблюдайте или подождите, пока произойдет перезагрузка.

Если я выключаю устройство во время зарядки, я думаю, что вместо этого оно перезагружается в режим зарядки (с включенным процессором), просто не запуская обычный пользовательский интерфейс Android.
Я хочу, чтобы Android был в обычном спящем режиме (как бы не подключенным без каких-либо вейклоков), но еще и заряжался. Например, если я подключаю очень слабое (менее 1 ватта) зарядное устройство, оно вместо зарядки начинает разряжать батарею, потому что зарядка держит процессор включенным, а слабого входного питания недостаточно для поддержания работы процессора, поэтому батарея используется больше (по сравнению с просто в режим ожидания).
Я видел только зарядку с выключенным процессором, когда батарея действительно разряжена. В этом режиме он даже не пытается включиться, не реагирует ни на какие кнопки и не загорается никакими светодиодами (если только в аккумуляторе уже есть заряд).
Процент батареи не может быть показан, если процессор действительно выключен. И загрузка с действительно выключенного на «может показывать процент заряда батареи» довольно долгая (для загрузки требуется ядро ​​​​Linux). Длительное нажатие кнопки питания для загрузки Android с нуля (в выключенном состоянии) отличается от продолжения загрузки из режима зарядки; последний еще быстрее.

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