2013-07-03 6 views
0

Могу ли я узнать, сколько времени у меня есть до того, как батарея перейдет на 0%? Что-то, используя CountDownTimer и делая известие о том, сколько мАч потребляет батарея? Кто-то может мне помочь?Получите, сколько времени у меня есть до того, как батарея перейдет на 0%. Android

ответ

1

Короткий ответ: Нет

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

Как вы могли догадаться уже, возможно, это не так точно, но чем больше вы найдете sample, тем точнее будут данные. Итак, вот что вам нужно сделать:

Прежде всего, когда пользователь открывает приложение, потому что у вас недостаточно данных об энергопотреблении, вы должны просто отобразить что-то вроде Calculating.... Здесь вы должны выбрать время выборки. Это что-то вроде derivation в математике ..

Предположим, у вас есть время выборки 10 секунд. (Ваш фактический должен быть больше, я думаю.)

У вас должна быть переменная с именем вроде level1 .. Сохраните текущий уровень. Подождите, пока количество sample time, которое теперь составляет 10 секунд. Теперь сохраните текущее значение до level2. Сохраните продукт level1 - level2 другой переменной, например consumed.

Теперь вот волшебство. Вы знаете, сколько энергии было потреблено за 10 секунд (это переменная consumed). С этого момента вы можете рассчитать оставшееся время с использованием этих данных. Но помните, что это еще одна 10 секунд. Что, если этот 10-секундный пользователь играл в тяжелую игру или даже на устройстве стоял? Вот почему это не точно. Но до сих пор ..

Что вы можете сделать, это добавить переменную consumed в массив с именем sample_data. Пусть процесс продолжается и пример потребления каждые 10 секунд и добавьте его в массив. Чем больше данных вы получите, тем точнее будет ваш расчет.

Тогда вы можете легко рассчитать оставшееся время, используя усредненные образцов в массиве .. Easy Peasy: р

+0

Ахаха да это очень «легко» !!! Хорошо, я понимаю, что вы написали. Но, возможно, для меня это немного сложно сейчас :) Спасибо в любом случае –

+0

Я предполагаю, что вы будете использовать battery_level = intent.getIntExtra (BatteryManager.EXTRA_LEVEL, -1), чтобы получить свой уровень1, level2 и т. Д. Так как этот ответ не очень-то андроид Я добавлю следующее: если вы запустили такое приложение в потоке пользовательского интерфейса (как обычно, оно не работает), это не сработает. Это должна быть справочная служба, использующая класс [IntentService] (https://developer.android.com/training/run-background-service/create-service.html). –

+1

@ user2508402 Да, возможно, мне легко говорить, но реализовать это будет сложно .. Но по крайней мере попытайтесь это сделать, и если у вас возникнут какие-либо вопросы, я здесь, чтобы ответить :) –

2

Вы не можете точно догадаться, сколько времени осталось для разряда батареи, вы можете просто оценить.

Вы можете получить срок службы батареи с помощью широковещательного приемника путем регистрации приемника для действия Intent.ACTION_BATTERY_CHANGED

battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 

Edit:

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

Так что, если ваша батарея 80% снижается 4% в час, у вас есть 20 часов жизни батареи оценивается

+0

Плакат хотел рассчитать оставшееся время, а не в процентах. –

+0

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

+0

Я знаю, что вы должны были упомянуть об этом в ответ. –