Pull to refresh

ВикиГид — Android-энциклопедия достопримечательностей Украины

Reading time4 min
Views971
ВикиГид
В июне, при поддержке компании HTC, в Украине проводился конкурс среди разработчиков Android-приложений, в котором я принял участие. Хочу рассказать вам о приложении, которое я подал на конкурс, о том, как оно создавалось и о проблемах платформы Android, с которыми я столкнулся.

Сначала краткое описание программы:
Энциклопедия достопримечательностей из всех уголков Украины. Подробная информация из Википедии на русском и украинском языке. Фотографии, видео и отзывы других пользователей. Дневник путешествий и интеграция с социальными сетями.

Для тех, у кого пока нет Android-телефона, под катом я сделал видео-обзор приложения.


Идея



Мне очень нравится путешествовать по Украине и открывать для себя новые места, поэтому, когда я узнал о конкурсе, идея пришла сама собой. Сделать приложение, отвечающее на два главных вопроса, которыми задаешься в незнакомом городе: «куда пойти?» и «что это за место?».

Внимательно прочитав (на украинском) правила конкурса и критерии оценки программ, понял, что выбранная тема подходит идеально: очевидна польза именно для украинского рынка и будет очень уместно задействовать «технологии платформы Android» — камеру и GPS.

Изначально было указано, что приложения на конкурс принимаются до 10 июня. Времени было мало, поэтому я решил ограничиться только достопримечательностями Крыма. Позже конкурс продлили до конца июня и это позволило добавить в базу данных программы множество интересных мест со всех уголков Украины.

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

Поскольку так уж вышло, что в сервисе микроблоггинга Juick, которым я тоже занимаюсь, есть и геолокация, и поддержка фото/видео, социальные функции приложения я решил сделать на основе Juick API. Специально для ВикиГид-а было добавлена JSON-версия API (пока закрыта для сторонних разработчиков). Также, благодаря использованию Juick, в программе автоматически появилась интеграция с Facebook и Twitter.

Разработка


У меня уже был опыт разработки на Java вообще и для Android в частности, поэтому никаких особых проблем не возникало. Впрочем, небольшие трудности были.

Первая трудность, с которой пришлось столкнуться — это практически полное отсутствие готовой графики для Android и очень скудный набор системных иконок. У платформы довольно специфические требования, поэтому взять любой попавшийся бесплатный icons set не получится. А нарисованные с учётом Android UI Guidelines — можно на пальцах одной руки пересчитать. Приходится всё рисовать самому. Из этого выплывает трудность номер два.

Я работаю в Linux, приложение разрабатывалось в привычном для меня NetBeans. Официальный Linux Android SDK работает замечательно и никаких нареканий не вызывает, нет ни малейшей нужды устанавливать какую-то другую ОС. Но это касается только программирования. В UI Guideliness, на которые я дал ссылку выше, в отношении дизайнеров уже начинается дискриминация: все шаблоны и примеры — в формате PSD, настройки и скриншоты из руководства — только для Adobe Photoshop.
Разумеется, ставить ради пары иконок Windows и Photoshop или мучаться с QEMU/Wine у меня не было никакого желания, поэтому я попытался задействовать GIMP для наложения эффектов, указанных в настройках. Меня ждал неприятный сюрприз: для GIMP я нашел всего один плагин, реализующий «Inner shadow» и «Inner bevel», и этот плагин отказался делать bevel с size:0. Указываю подробности на случай, если кто-то сталкивался и нашел решение. Мне же пришлось оставить иконки без этого эффекта.

Главной проблемой для меня оказалась необходимость иметь телефон для тестирования приложения. Если простые программы вполне возможно проверять, используя только эмулятор, то в моём случае (использование камеры и GPS) нужен был именно телефон, которого у меня нет. :) А лучше даже несколько разных устройств. Например, я столкнулся с багом камеры Android, который зависит не только от модели телефона, но и от версии прошивки.

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

В завершение хочу поделиться интересным решением, на котором основана функция автоматического обновления базы программы. В моём случае требовалось только знать, есть ли изменения в базе с момента последней проверки или нет. Поэтому я воспользовался стандартной функциональностью протокола HTTP: заголовками «Last-Modified» в ответе и «If-Modified-Since» в запросе. Запоминаете дату последней модификации файла и при проверке указываете её серверу. Если изменения есть — сервер отдаст вам файл целиком, если нет — только код 302. Благодаря этому, на сервере не нужны никакие скрипты, а базу можно выкладывать в виде обычного статичного файла на абсолютно любом хостинге.

Результат


ВикиГид ВикиГид ВикиГид ВикиГид



Загрузить


Программа доступна в Android Market и в виде APK на сайте конкурса.
QR-код

Конкурс


Страничка программы на сайте конкурса: ВикиГид — можно оставить комментарий, рассказать свои впечатления от программы.
Результаты конкурса организаторы обещают выложить не позже 11-го июля, будем ждать. :)
Tags:
Hubs:
+48
Comments43

Articles