С каких это пор телефон заряжается/разряжается?

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

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

Но есть проблема с этим решением: оно не будет показывать правильные данные сначала, когда пользователь запускает приложение. Я бы не стал придавать этому большого значения, но я видел, что Android где-то отслеживает эти данные, потому что в настройках своего телефона я нашел эту информацию, так зачем идти сложным путем.

Итак, мой вопрос: есть ли простой способ получить из системы Android дату/время (независимо от формата) последнего изменения состояния зарядки?

Я просмотрел справочник по BatteryManager, но там нет констант, названных в честь того, что я seek, и который я мог бы использовать, чтобы получить информацию от Intent моего получателя.


person Balázs Édes    schedule 06.08.2012    source источник


Ответы (1)


ОС Android отслеживает подключение/отключение источника питания, но не делает эти данные доступными для приложений. Вы должны записывать все это сами, используя фильтры намерений.

Можно использовать два фильтра намерений: android.intent.action.ACTION_POWER_CONNECTED и android.intent.action.ACTION_POWER_DISCONNECTED; с их помощью вы можете контролировать, когда источник питания подключен и отключен.

Вы можете найти информацию об этом процессе невероятно ясно объясненную здесь . Другой блог с описанием процесса можно найти здесь.

person Eric    schedule 06.08.2012
comment
Спасибо, вы очень быстро! :) Я приму ваш ответ, как только мне позволит Stackowerflow. - person Balázs Édes; 07.08.2012
comment
Никакой спешки! Рад, что вы получили то, что вам нужно. :) - person Eric; 07.08.2012
comment
Сначала я не прочитал весь ваш ответ, я был так счастлив, я просто сосредоточился на именах намерений: D Итак, вы говорите, что мне придется отслеживать эти изменения вручную и отслеживать время, когда они произошли, как я упоминается в вопросе? - person Balázs Édes; 07.08.2012
comment
Ага! И, когда приложение впервые установлено, у вас не будет никаких данных, поэтому вы должны попросить пользователя (очень вежливо) зарядить свой телефон, чтобы статистика работала правильно. - person Eric; 07.08.2012