MQTT BroadcastReceiver
Давно хотел сделать приложение, которое будет следить за уровнем разряда телефона, входящих звонках и сообщений, и передавать эти события на сервер УД. Но как всегда отсутствие свободного времени и острой необходимости, данное приложение не занимало должного приоритета в списке моих задач на ближайшее будущее. Работая над одним проектом, пришлось поближе познакомиться с библиотекой MQTT клиента Eclipse Paho под android, ну и написать простое приложение.
Как уже писал выше, в качестве протокола для передачи данных используется MQTT, так как он достаточно популярен и поддерживается различными платформами для систем "умный дом". Чтобы реализовать поставленную задачу, а так же существенно не повлиять на продолжительность автономной работы android устройства, для MQTT был выбран режим, только публикации топиков без возможности подписки. Для отслеживания событий используется BroadcastReceiver - это приемник широковещательных сообщений, android использует широковещательные сообщения для системных событий, таких как уровень зарядки батареи, сетевые подключения, входящие звонки и sms и т.д.
Основную часть времени, приложение бездействует и ждет события, как только событий происходит, приложение подключается к MQTT брокеру, передает данные об изменениях и отключается от брокера. Из минусов данного способа - это отсутствие обратной связи, так как нет постоянного подключения к MQTT брокеру, т.к. это повлияла на автономность работы устройства. Исключение составляет только когда устройство подключено к зарядки, в таком режиме нет необходимости заботиться о энергопотреблении, соответственно соединение не разрывается и приложение остается работать и передавать уровень заряда и другие параметры.
Внешний вид.

Установив приложения мы попадаем на главный экран, на котором расположен список из категории. Свайпом слева направо, можно вызвать боковую панель, где расположены пункты проверки соединения, настройки и другие пункты. Имена категории и под категории можно создавать любые, названия топика (topic) должно содержать только латинский буквы и не иметь пробелов. Все категории будут создаваться в топике GT-I9500/info/item/. Например для категории Room и ее под категория Light будут создан такой топик GT-I9500/info/item/room/light
Настройки.

С основными настройками вкладки MQTT не должно возникнуть вопросов. Device name — это имя вашего android устройства, например у Samsung S4 имя будет GT-I9500, если у вас 2 одинаковых android устройства, то имя устройства нужно поменять, если этого не сделать все сообщения будут приходить на один топик. First topic — это префикс для всех топиков, данная опция нужна если хотите разместить не в корне брокера, как тут GT-I9500/info/battery/charging, а в отдельном топике, тогда все топики будут размещаться так mytopic/GT-I9500/info/battery/charging
General - это вкладка с общими настройками, тут можно выбрать какие данные будут отправляться на сервер (MQTT брокер), а так же другие параметры. Пункт Full battery данная настройка устанавливает при каком уровне зарядке батареи, будет отправлен в топик GT-I9500/info/battery/status значение ok
Так, выглядят все топики и их значения, которые передаются на MQTT брокер

В заключении можно посмотреть видео по настройки и работе приложения
Тестовую версию можно скачать тут
