как работает калибровка батареи?

Есть несколько сообщений о том, как откалибровать батареи Android, но ни один из них не описывает его работу. Каким образом система может определить, при каком напряжении батарея считается заряженной (100% или, скажем, 4200 мВ) и при каком напряжении считается разряженной (0% или 3400 мВ)?

«Android останавливает зарядку аккумулятора при достижении 100%», но если он откалиброван неправильно, почему он не прекращает зарядку при другом напряжении (скажем, 4100 мВ) или даже продолжает разряжаться при напряжении ниже его нормальной работы (скажем, 3200 мВ)?

Ожидаемый ответ:

  • Актуальное техническое понимание того, как Android определяет текущий уровень заряда батареи.

Редактировать 1: я подчеркиваю, что мой вопрос не имеет ничего общего со статистикой батареи и тем, сколько приложений батареи использовали, а исключительно с процедурой, связанной с определением% батареи.

Это мой первый вопрос, пожалуйста, извините за условности, которые я мог пропустить.

Я не знаю, отвечает ли это на ваш вопрос, но разве Android не получает информацию о напряжении и уровне заряда батареи от ядра?
@aureljared было бы, если бы вы могли сказать это окончательно вместе со ссылкой. И если это так, было бы здорово, если бы вы могли указать мне на фактический процесс определения процентного уровня заряда батареи на основе фактических показаний оборудования. Заранее спасибо!
Это очень интересный вопрос. Для nexus 5 (который у меня есть) алгоритм калибровки показаний батареи приведен здесь: androidpit.com/… Что меня озадачивает, так это то, что это определенно похоже на взлом кода прошивки диспетчера ОС/батареи. Есть ли у кого-нибудь конкретные ссылки в коде Android (или, может быть, фрагмент прошивки), которые определяют, почему это работает? (В идеале алгоритм, как определить, когда срабатывает "сброс" статистики батареи).

Ответы (3)

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

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

Я бы предположил, что именно эти цифры (от производителя) ядро ​​использует для расчета уровня заряда батареи.

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

Надеюсь, это поможет!!

Очень убедительно и элегантно! Но просто для подтверждения, технически вы говорите, что ОС объединяет свои аппаратные показания напряжения с предустановленными значениями, установленными поставщиком (или считанными с чипа батареи), чтобы определить текущий процент заряда батареи, используя какую-то формулу? Это определенно требует ссылок или для начала, где вы нашли такой файл!

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

Но это то, что инженер Google Диана Хэкборн опубликовала в своем G+.

«Этот файл [batterystats.bin] используется для хранения при перезагрузке низкоуровневых данных о видах операций, которые устройство и ваши приложения выполняют между заменами батареи. То есть он используется исключительно для вычисления виновных в использовании батареи. отображается в пользовательском интерфейсе «Использование батареи» в настройках. То есть в нем есть очень важные вещи, такие как «приложение X удерживало блокировку пробуждения в течение 2 минут» и «экран был включен с яркостью 60% в течение 10 минут». на показанном вам текущем уровне заряда батареи. Это не влияет на срок службы батареи».

Разобрался (читал его пост ранее) batterystats.bin не отвечает за определение текущего % батареи , а что такое и как это работает? -(пояснение: мой вопрос не имеет ничего общего с тем, как создается статистика батареи для каждого приложения)
Калибровка батареи удаляет этот файл, заставляя Android заново получать эту статистику. Помните, что вам будет предложено выполнить калибровку, как только вы достигнете 100 процентов, и вас попросят сбросить ее до 0%. Статистика собирается с нуля. Таким образом, у вас будет правильная индикация батареи (думаю, что обновленные приложения могут потреблять меньше батареи). )
Я не понимаю! Если статистика удалена, то как я могу верить, что если я зарядю ее на 100%, то это на самом деле верхний предел моей батареи (поскольку статистика удалена, андроид показывает ложное указание моей батареи!) Более того, вы еще не сказали, где он хранит новую информацию! Только что в batterystats.bin его нет! Я ожидал подробного объяснения его работы! Пожалуйста, будьте более техничными!
«BatteryManager транслирует все сведения об аккумуляторе и зарядке в липком намерении, которое включает в себя состояние зарядки». Индикация батареи не имеет ничего общего с batterystats.bin, панель статистики батареи используется только для индикации использования батареи... См. здесь developer.android.com/training/monitoring-device-state/…
Я ценю ваше исследование и ненавижу быть суетливым, но после прочтения статьи я обнаружил, что это не связано с калибровкой батареи и не совсем отвечает на мой вопрос, в частности, в нем говорится: «батарея% = уровень / (плавающая) шкала», но как неоткалиброванное устройство получает шкалу батареи. Однако статья оказалась очень интересной и дает ответы на несколько других вопросов. Но ничего, связанного с техническими деталями калибровки батареи :(

Хранится в ядре. Скомпилировано с использованием известных значений для конкретного оборудования. Прошил в ПЗУ. Считывает текущее значение. Процентирует это.

Великолепно @jay! Имеет большой смысл. Этого ответа я и ждал! Однако опять же в нем отсутствуют резервные ссылки, и в его формулировке присутствует общая двусмысленность. Пожалуйста, отредактируйте, это потенциально принятый ответ, спасибо заранее