Знание BatteryManager.Battery_Status_Full после получения ACTION_BATTERY_CHANGED через BroadcastReceiver - PullRequest
1 голос
/ 09 марта 2012

Я работаю над приложением, в котором мне нужно обновить время в дБ, когда происходит либо Battery_Status_Full (батарея заряжена на 100%) / зарядка отключена, в зависимости от того, что произойдет раньше.

Я могу получить событие отключения батареи и обновить базу данных на основе этого события, но пока устройство все еще заряжается и достигает 100% заряда, когда внутри службы - onCreate я зарегистрировал broadcastReceiver с IntentFilter (Intent. ACTION_BATTERY_CHANGED) и пытаясь вызвать повторяющееся событие после, скажем, каждые 5 минут, чтобы проверить, завершена ли 100% зарядка батареи, я, кажется, никогда не получаю событие 100% и, следовательно, всегда происходит обновление db отсоединения, а не обновление 100% зарядки. Кроме того, с моим AlarmManager служба проверки на 100% заряд батареи запускается только один раз и не повторяется.

Пожалуйста, руководство. Я почти закончил с моим приложением, но эта маленькая ошибка заставляет меня сходить с ума. Спасибо Омкар Гайс

---- Подробнее ---- Моя архитектура приложения, как показано ниже,

  1. BroadcastReceiver (зарегистрирован для ACTION_POWER_CONNECTED и ACTION_POWERDISCONNECTED). В каждом случае запускается отдельная служба для обработки транзакций БД. Для подключенного POwer он устанавливает Intent с дополнительной информацией, называемой ADD, а для отключенного - с помощью Update

  2. Когда служба запускается, в своем onCreate она регистрирует получателя, передавая нулевой широковещательный приемник для IntentFilter ACTION_BATTERY_CHANGED и в onStartCommand для флага добавления в намерении новая запись сохраняется в БД. В случае флага обновления - только если ранее не было выполнено обновление записи в БД, я продолжаю и обновляю БД

  3. У меня есть AlarmManager с setRepeating под приведенной выше логикой добавления / обновления (If-Else), который запускает другой сервис с помощью getService (serviceclass.class)

  4. Я ожидаю, что в рамках новой услуги, когда я продолжаю проверять, достиг ли уровень батареи 100%, я обновляю там саму БД.

  5. Если батарея никогда не достигает 100% и сработала Battery_Dicsonnected, то в блоке обновления выше, база данных в любом случае будет обновлена, с любым уровнем заряда батареи в это время.

Сомнения / проблемы -

  • Но проблема в том, что новая служба, вызываемая из alarmmanager, запускается / вызывается только один раз.
  • Где именно разместить этот диспетчер аварий в 1-й службе?
  • Создан ли второй сервис для постоянной проверки уровня заряда батареи на 100%?

Руководство Pls. Я могу очень хорошо опубликовать код, если это необходимо. Спасибо Omkar

1 Ответ

0 голосов
/ 11 марта 2012

Я наконец понял это.Мое расположение Alarmmanager было неправильно.Я исправил это, а также удалил ненужный второй сервис, просто чтобы проверить, был ли достигнут уровень заряда батареи 100%.Наконец все работает как положено.:-) вау, я так рад, что мое первое приложение для Android работает как положено.Спасибо за всю помощь, хотя.Omkar

...