Могу ли я узнать, сколько времени у меня есть до того, как батарея перейдет на 0%? Что-то, используя CountDownTimer
и делая известие о том, сколько мАч потребляет батарея? Кто-то может мне помочь?Получите, сколько времени у меня есть до того, как батарея перейдет на 0%. Android
ответ
Короткий ответ: Нет
Длинный ответ: Да, вы можете .. Но не так легко. Потому что вы не знаете, сколько энергии потребляет устройство за раз, вы должны сначала попытаться найти это, а затем вычислить оставшееся время с использованием этих данных ...
Как вы могли догадаться уже, возможно, это не так точно, но чем больше вы найдете sample
, тем точнее будут данные. Итак, вот что вам нужно сделать:
Прежде всего, когда пользователь открывает приложение, потому что у вас недостаточно данных об энергопотреблении, вы должны просто отобразить что-то вроде Calculating...
. Здесь вы должны выбрать время выборки. Это что-то вроде derivation
в математике ..
Предположим, у вас есть время выборки 10 секунд. (Ваш фактический должен быть больше, я думаю.)
У вас должна быть переменная с именем вроде level1
.. Сохраните текущий уровень. Подождите, пока количество sample time
, которое теперь составляет 10 секунд. Теперь сохраните текущее значение до level2
. Сохраните продукт level1 - level2
другой переменной, например consumed
.
Теперь вот волшебство. Вы знаете, сколько энергии было потреблено за 10 секунд (это переменная consumed
). С этого момента вы можете рассчитать оставшееся время с использованием этих данных. Но помните, что это еще одна 10 секунд. Что, если этот 10-секундный пользователь играл в тяжелую игру или даже на устройстве стоял? Вот почему это не точно. Но до сих пор ..
Что вы можете сделать, это добавить переменную consumed
в массив с именем sample_data
. Пусть процесс продолжается и пример потребления каждые 10 секунд и добавьте его в массив. Чем больше данных вы получите, тем точнее будет ваш расчет.
Тогда вы можете легко рассчитать оставшееся время, используя усредненные образцов в массиве .. Easy Peasy: р
Вы не можете точно догадаться, сколько времени осталось для разряда батареи, вы можете просто оценить.
Вы можете получить срок службы батареи с помощью широковещательного приемника путем регистрации приемника для действия Intent.ACTION_BATTERY_CHANGED
battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
Edit:
Что вы должны сделать, периодически получить battery_level
и проверить, сколько батарея потребляется в минуту/час, и делайте некоторые расчеты.
Так что, если ваша батарея 80% снижается 4% в час, у вас есть 20 часов жизни батареи оценивается
Плакат хотел рассчитать оставшееся время, а не в процентах. –
Вы не можете точно догадаться, сколько времени осталось для разряда батареи, вы можете просто сделать некоторую оценку, но для этого требуется много кода и быть корневым для мониторинга всех системных процессов. –
Я знаю, что вы должны были упомянуть об этом в ответ. –
Ахаха да это очень «легко» !!! Хорошо, я понимаю, что вы написали. Но, возможно, для меня это немного сложно сейчас :) Спасибо в любом случае –
Я предполагаю, что вы будете использовать battery_level = intent.getIntExtra (BatteryManager.EXTRA_LEVEL, -1), чтобы получить свой уровень1, level2 и т. Д. Так как этот ответ не очень-то андроид Я добавлю следующее: если вы запустили такое приложение в потоке пользовательского интерфейса (как обычно, оно не работает), это не сработает. Это должна быть справочная служба, использующая класс [IntentService] (https://developer.android.com/training/run-background-service/create-service.html). –
@ user2508402 Да, возможно, мне легко говорить, но реализовать это будет сложно .. Но по крайней мере попытайтесь это сделать, и если у вас возникнут какие-либо вопросы, я здесь, чтобы ответить :) –