Подтвердить что ты не робот

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

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

       [UIDevice currentDevice].batteryLevel

Дает уровень заряда батареи с точностью 5%. Но недавно я использовал приложение Battery Doctor на моем iphone 4S под управлением ios 5.1, что дает уровень заряда батареи с точностью до 1%. У любого есть идея, как мы можем получить эту точность... Я много пытался и много искал, но не получал, как они его вычисляют. Спасибо заранее...

4b9b3361

Ответ 1

Начиная с iOS 8,

[UIDevice currentDevice].batteryLevel

обеспечивает точность 1%:)

Ответ 2

Если вы отключите опцию "Настройка" > "Основные" > "Использование" > "Аккумулятор", "Аккумулятор Доктор" показывает уровень заряда аккумулятора с точностью до 5%... Поэтому я предполагаю, что они используют алгоритм распознавания изображений для верхнего правого угла устройство, в котором отображается процент батареи.

Ответ 3

Если вы взломаны, вы можете просто использовать

int percent = [(SBUIController*)[objc_getClass("SBUIController") sharedInstance] displayBatteryCapacityAsPercentage];

Этот метод присутствует в iOS 4.3+, и, вероятно, это то, что использует Battery Doctor.

Ответ 4

Ответ приходит из этого вопроса:

Вы можете использовать NSTimer для управления значениями, которые вы показываете с точностью . Для каждого сеанса приложение активно, создайте образец данных о батарее (например, время, необходимое для снижения уровня заряда батареи от 100% до 95%, затем от 95% до 90% и т.д.) И сохранить его на самом устройстве, Затем используйте таймер, чтобы установить обновленное (и оцененное) значение батареи в соответствии с временем, требуемым для того, чтобы уровень батареи упал на 5%, разделенный на 5 (при условии, что каждый процент падает после того же интервала, который будет меняются, но это не будет заметным отклонением). Это правда, что время автономной работы падает со временем, но поскольку мы настраиваем значение таймера в соответствии со значениями, сохраненными в последнем сеансе, оно должно оставаться довольно точным в течение всего срока службы устройства.

Изменить -. Для исходного состояния вы можете указать значение по умолчанию в зависимости от модели iPhone (3,3G, 4,4S). Различные значения могут быть рассчитаны для этих разных устройств.

Ответ 5

В iOS 8.1.x я заметил, что уровень заряда батареи теперь сообщает о точном уровне заряда батареи для приложений. Раньше UIDevice сообщалось каждые 5%. Вам больше нечего делать в iOS 8.1.x, поскольку [UIDevice currentDevice].batteryLevel должен сообщить об этом автоматически.