Уведомлять пользователя, когда температура батареи превышает предел

Я разрабатываю приложение, которое получает максимальную температуру от пользователя. Он продолжает отслеживать текущую температуру батареи. И как только температура превысит максимальную температуру, полученную от пользователя, он должен уведомить пользователя.

Я разработал макеты, написал логику для хранения температуры от пользователя, и я знаю, что могу контролировать температуру, используя EXTRA_TEMPERATURE. Однако это приложение должно работать в фоновом режиме. Поскольку я должен всегда следить за температурой, по логике сервис должен работать всегда.

Читая форумы, я понимаю, что это сильно разряжает батарею, и в основном службы могут работать, когда экран включен. Но я хотел бы знать, можно ли пользоваться услугой в фоновом режиме, не разряжая батарею. Или есть другой способ добиться этого?

Мое приложение похоже на это: >Создание Android-приложения для измерения температуры, которое будет работать в фоновом режиме после активации


person senthilrameshjv    schedule 20.04.2013    source источник
comment
не могли бы вы поделиться, как вы решаете свою проблему?   -  person user3233280    schedule 06.01.2015


Ответы (1)


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

Ик.

Или есть другой способ добиться этого?

Шаг № 1: Разрешите пользователю выбирать период опроса (одна минута, пять минут, 10 минут и т. д.).

Шаг № 2: Настройте расписание AlarmManager, чтобы получить управление в моменты времени, основанные на этом периоде опроса, и направить управление на BroadcastReceiver.

Шаг № 3: В onReceive() из BroadcastReceiver получите последнюю информацию о батарее через registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)), выберите EXTRA_TEMPERATURE и обработайте ее в соответствии с вашим текущим алгоритмом. Если работа, которую нужно выполнить здесь, превысит пару миллисекунд, рассмотрите возможность делегирования этой работы IntentService, который может выполнять работу в фоновом потоке.

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

person CommonsWare    schedule 20.04.2013
comment
Спасибо большое. Я использую этот способ сейчас. Посмотрим, получится ли. Не могу проголосовать за ответ, так как у меня нет 15 представителей. - person senthilrameshjv; 22.04.2013