День добрый, читатели. В данном посте хотелось бы ознакомить вас с нашим небольшим начинанием и получит фидбек в виде советов, предложений и конструктивной критики. Лучшего места где подобный интерактив возможно получить мы не знаем. И так
Предыстория:
Около 2 недель назад состоялся разговора с моим другом aNNiMON, где зашла речь о социальных сетях. Разговор был о том что пользователи много времени уделяют Facebook или Twitter, но проводят это время бесполезно по большому счету. Да и сами соцсети особой полезной нагрузки не несут. Я дал ему почитать ссылку на этот хабрапост, и сказал что на основе того же Twitter люди делают подобные сервисы взаимопомощи даже у нас, к примеру ulway.net. Да собственно и самому подобное недолго сделать. Немного пообщавшись на тему такого сервиса, было решено сделать небольшой проект, который позволял бы мониторить чрезвычайные ситуации, состояние дорожного движения и сводки полиции (милиции), используя ресурсы Twitter и соцсетей. Поскольку веб-разработчики с нас никакие, решено было сделать мобильное приложение для первого запуска и фидбека от пользователей. К сожалению aNNiMON из-за учебы не смог активно участвовать в проекте, поэтому я вызвался в одиночку реализовать все что смогу.
Challenge accepted:
Составил примерные требования:
— определение местоположения;
— нужен прогноз на ближайшие пару часов и пару дней;
— пробки или что-то в этом роде;
— сводки от МЧС и МВД;
— сообщения от пользователей;
— возможность отправлять уведомления из программы;
Начал работу по пунктам:
1.) О определении местоположения без GPS я уже писал статью, повторять не буду. Будем тот способ и использовать.
2.) С погодой просто, давно уже работаю с worldweatheronline, главное есть возможность передать координаты и получить прогноз для точки.
3.) С пробками всё не так легко оказалось. Наилучшим вариантом было бы использовать данные Яндекс.Пробок, но как оказалось, они не выдают сводки о заторах в xml или в каком то другом формате кроме карт. Хотя может я плохо искал. Так же проморгал что размеры тайлов на Я.Картах не могут быть больше 650*450, поэтому сразу не мог понять почему на больших экранах мне приходил от API ответ 400. Но быстро все исправил.
4.) Сводки от МЧС и МВД решено было брать из RSS каналов ресурсов. К тому же порадовала оперативность обновления информацию, даже ночью в субботу в ленте появляются сообщения о пожарах и прочих бедствиях. После загрузки происходит парсинг и обработка фильтром для выделения событий, которые относятся только к тому местоположению где вы находитесь (область и город).
5.) Сообщения от пользователей лучше всего было собирать с Twitter, благо через Twitter RSS можно создать поисковый запрос и распарсить полученный xml. Что я собственно и сделал. Запрос на поиск происходит вида #Kiev_200213 (диез, город транслитом, нижнее подчеркивание и по 2 числа дата-мес-год). Сообщение разбито на 3 части с помощью точки с запятой, в первой части хештег, во второй адрес, в третьей комментарии события. Разбитие необходимо для выделения адреса и нанесения точки на карту.
6.) Отправка сообщений пользователем. Была немного переосмыслена идея, в результате теперь пользователь может сообщить о событии в эфир (всем пользователям), позвонить в скорую и другие экстренные службы, а так же сообщить кому то из своих близких или друзей. Для постинга в эфир был выбран сервис Time2Post (на Хабре уже есть обзор подобных сервисов), выбор пал на него по ряду причин: работает с RSS, поддержка кроме Twitter, еще и Vkontakte, Facebook и Linkedin. aNNiMON написал небольшой скрипт для клиента, куда можно было слать сообщения, а он в свою очередь генерировал RSS ленту, которую обрабатывал Time2Post. Период репоста сообщений с ленты колеблется в пределах 15-20 минут (каждые 15 минут проверяется лента, и каждые 5 минут отправляются сообщения). Для отправки сообщения контактам на Android используются внешние приложения, на j2me и Blackberry была подготовлена библиотека JXA. Однако изначально она работает только с GoogleTalk, пришлось переписать ее так же под обычный Jabber и добавить MD5-DIGEST для подключения к Facebook. Таким образом удалось охватить максимальное число сервисов общения.
TODO:
-пока не удалось аттачить карту с точкой события в ленту. Хотя тег enclosure генерим вроде верно (RSS ридер Оперы корректно открывает), но на страничках карта не появляется. Прямую ссылку на Я.Карты не пропускает валидатор, а вот с bit.ly проходит. Подозреваем что это или изза редиректа или изза отсутствия расширения в url ссылки.
-не совсем устраивает интерфейс Android-клиента, будет перерабатываться стартовый экран и иконки
Итог:
Менее чем за 2 недели были подготовлены клиенты для Android, J2ME и Blackberry, организованы странички в соцсетях для посещения через веб-интерфейс. Проведено тестирование на платформах и подчистка хвостов. Была получена обратная связь, в которой пользователи позитивно оценили сервис.
Вообщем то альфа-версия сервиса готова, не стыдно ее и общественности показать. Вышел ли наш первый такой опыт комом решит время.
На данный момент клиент позволяет:
— просмотреть карту пробок и событий в радиусе около километра;
— просмотреть прогноз на ближайшие часы и следующие 5 дней;
— получить сводку от МЧС и МВД (для Украины, России и Белоруссии линки автоматически подставляются в настройках);
— просмотреть сообщения от пользователей о случившихся ЧП и отобразить их на карте;
— сообщить другим о ЧП, указав тип события, адрес и короткое описание, при желании можно добавить фото;
— сообщить о ЧП в экстренные службы или близким несколькими способами;
— настроить номера экстренных служб и контактов.
Есть доступ к сводкам через веб-интерфейс в основных соцсетях.
Если кому то интересно поучаствовать, будем очень рады помощи, особенно от дизайнеров.
Скриншоты:
Android
J2ME
Blackberry
QR код для всех платформ (OperaMobileStore, извините, нет аккаунта в GooglePlay)
или ссылка (тоже для всех) mobilestore.opera.com/emergencyua.html
Автор: SergejKomlach