Как программно остановить зарядку телефона через USB

Я пытался провести как можно больше исследований, но не могу найти ответ на этот довольно простой вопрос (хочу выяснить это, прежде чем я собираюсь настроить SDK и все такое). Я думаю о разработке своего первое приложение, и мне интересно, содержит ли BATTERY_STATUS_CHARGING из BatteryManager только функцию get или также функцию set.

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


person Masi    schedule 13.04.2013    source источник
comment
Это могло бы ответить на ваш вопрос: stackoverflow.com/questions/6654189/   -  person luxer    schedule 14.04.2013


Ответы (5)


Нет, это невозможно на нерутированных устройствах. Он использует Settings.System с ADB_ENABLED, но ADB_ENABLED является параметром безопасной системы, который не может быть изменен приложением.

Да, это можно сделать на рутированном телефоне.

Необходимо добавить разрешение android.permission.WRITE_SECURE_SETTINGS.

Приложение того же типа в Google Play: https://play.google.com/store/apps/details?id=com.jim2&hl=en

person Ajay S    schedule 13.04.2013

Вы можете подключить его напрямую: 12 Ом в последовательном порту по-прежнему заставляют телефон распознаваться компьютером, но медленно разряжаются. См. прикрепленное изображение. .jpg" alt="Кабель microUSB подключен к печатной плате. На печатной плате видно, что VCC подключен к проводу через резистор 12 Ом, а D-, D+ и GND подключены напрямую к проводам. Все провода идут к кабелю вне изображения">

person Community    schedule 12.11.2015

Я знаю, что эта ветка устарела, но все равно публикую свои ответы для тех, кто зайдет сюда позже. Попробуйте следующее:-
echo 0 > /sys/class/power_supply/batterycharging_enabled/charging_enabled

person Zakir    schedule 01.06.2017
comment
В моем телефоне был такой файл: /sys/class/power_supply/battery/battery_charging_enabled - при обновлении содержимого этого файла на 0 перестала заряжаться (исходя из информации от AccuBatery и от LED). Но мне интересно, безопасно ли это. Я не знаю, действительно ли зарядное устройство перестало выдавать валюту или просто программное обеспечение думает, что оно не заряжается. - person dey; 02.06.2017
comment
@dey: это зависит от реализации вашего телефона. Как на моем Xperia X Performance (уровень API 26), так и на Xperia Ray (уровень API 15) потребление энергии не снижается после обновления соответствующего файла. Тем не менее, X Performance может работать в течение нескольких часов без потери заряда, в то время как батарея Xperia Ray довольно быстро теряет заряд, и ее нужно время от времени перезаряжать (путем изменения значения). - person Alex Essilfie; 20.08.2018

К сожалению, это невозможно. Android имеет только API для чтения данных о батарее. ADB_ENABLED в этом случае также не поможет, так как он только для включения отладки через USB.

Управление зарядкой батареи является внутренним для ядра Android и модулей батареи IC. Производители время от времени меняют его, но он недоступен для приложений без рута и без управления модулями IC (интегрированный чип) через какой-то хитрый интерфейс, который на самом деле будет отличаться почти для каждого устройства!

В лучшем случае, если нам повезет, в этом может помочь интерфейс sysfs, но опять же для этого требуется root и может отличаться от устройства к устройству.

person 3c71    schedule 06.10.2013

Используйте приведенную ниже команду, чтобы остановить зарядку мобильного/портативного устройства при подключении к USB:

adb shell dumpsys battery set ac 0; комплект батарей dumpsys usb 0;

person tejaswini teju    schedule 24.04.2019