android
Найдено: 66 записей
Реклама →
Такси Джет – каждый водитель каждому пассажиру
«Назвать себя К. не решался, перед телефоном он чувствовал себя беспомощным, на него могли наорать, бросить трубку; К. закрыл себе немаловажный путь. Нерешительность К. раздражала его собеседника. «Кто говорит? — повторил он и добавил: — Я был бы очень обязан, если бы оттуда меньше звонили, только что нас уже вызывали»».
Картина не очень-то похожа на нашу повседневную жизнь, тем более что телефоном приходится пользоваться всё реже. Однако, если вы захотите вызвать такси, воспользоваться придётся. И хорошо, если вы знаете номера пары-тройки проверенных таксофирм, но в час пик и это может не сработать, к тому же от разговора с диспетчером никак не отвертеться – и вот опять: адрес подачи, пункт назначения, повторите, плохо слышно, через сколько приедет, сколько стоит и прочее. Благо существуют мобильные технологии, которые уже спешат избавить нас от подобных неудобств.
13.03.2012 10:33+0400
Реклама →
Счетовод или как помнить о всех затратах
Привет. Сегодня хочу представить вашему вниманию приложение, которое совсем недавно было написано мною и моим товарищем. Приложение называется Счетовод (есть англ. версия — Your Accountant). Основная его задача — это ведение учета ваших затрат. Кого заинтересовало — прошу под кат
12.03.2012 18:12+0400
Реклама →
Московский GTUG — хакатон по Android 18-19 февраля 2012 г
Пользуетесь календарем для планирования распорядка дня? Немедленно выкиньте его на помойку — в эти выходные он вам не поможет и ваши планы будут жестоко нарушены! Спросите почему? А все потому, что грядет событие, которое ну никак нельзя упустить!
Мы говорим о Мировом Хакатоне по разработке на Android, событии, охватывающем весь наш земной глобус. Организацией события занимается более пятидесяти GTUG’ов, вот они: bit.ly/androidhackathonmap. В эти дни, 18-19 февраля 2012 года, тысячи разработчиков на android соберутся, чтобы попробовать за 48 часов
14.02.2012 17:31+0400
Android →
Перехват аккаунтов пользователей в Wi-Fi-сетях с Android
В сети стала появляться информация о сниффере под любой рутованный смартфон или планшет на Андроиде (от 2.1), позволяющий ходить под чужими аккаунтами многих веб-сайтов, в том числе Facebook и Vkontakte в общественных сетях Wi-Fi.
Речь идет о программе DroidSheep.
О механизме ее работы и использовании поговорим подробнее.
Речь идет о программе DroidSheep.
О механизме ее работы и использовании поговорим подробнее.
12.02.2012 17:15+0400
Ни о чём →
Humble Bundle for Android
Стартовал новый Humble Bundle.
Доступны 4 игры для Андроид (а так-же их версии для Mac, Win, & Lin)
Игры:
Как обычно, плати сколько хочешь, никакого DRM.
EFF и Child's Play — бенефициары.
www.humblebundle.com/
Доступны 4 игры для Андроид (а так-же их версии для Mac, Win, & Lin)
Игры:
- Anomaly — www.anomalythegame.com/
- Osmos — www.hemispheregames.com/osmos/
- EDGE — www.mobigame.net/
- World of Goo — 2dboy.com/games.php
Как обычно, плати сколько хочешь, никакого DRM.
EFF и Child's Play — бенефициары.
www.humblebundle.com/
01.02.2012 00:47+0400
Реклама →
Как разработка приложений на заказ может быть интересной
Чуть больше года назад я открыл агентство по разработке мобильных приложений. Тема эта меня очень увлекала, и я понимал, что за этим будущее. Кроме того, я видел, что спрос на разработку мобильных приложений уже огромный, а делать их пока мало кто умеет. Опыт в IT был довольно большой, поэтому я довольно быстро собрал небольшую команду разработчиков и стал делать приложения на заказ. Проблем с клиентами не было с самого начала. Мобильными приложениями интересовались практически все, а мы были одной из немногих компаний в Москве, которые выполняли разработку на заказ.
Очень много компаний хотели себе мобильное приложение, не отдавая себе отчета в том, что оно вообще может быть не нужно людям. Любой менеджер какой-нибудь компании, у которого был айфон или андроид, хотел заказать мобильное приложение для своей компании. Также очень много было смешных стартаперов, которые мечтали изменить мир, создав мобильное приложение — убийцу Foursquare. Мы старались обучать людей, рассказывать им о том, как и зачем люди используют мобильные приложения, и как их нужно делать, чтобы они нравились людям. Мы старались креативить для своих клиентов, придумывать что-то интересное и полезное. Мы старались не браться за скучные и неинтересные проекты. Но к сожалению, большинство заказов были именно такими.
Первым реально интересным нашим проектом оказалось приложение Авто-Юрист.
К нам обратилась юридическая компания, специализирующаяся на автомобильных ситуациях. У них было очень много полезного материала, но они понимали, что информация на сайте носит слишком академический характер, и реально у людей нет возможности использовать информацию на практике.
Мы поняли, что приложение может стать реально популярным и полезным для людей, и нам стало интересно! Мы сами разрабатывали не только дизайн приложения, но и участвовали в подготовке материала. Нам предстояло обработать и структурировать его таким образом, чтобы людям было реально удобно использовать его на мобильном телефоне. Приложение получилось действительно красивым, удобным и понятным. Мы также занимались и продвижением приложения, в результате чего оно получило порядка 100 000 скачиваний. С технологической точки зрения приложение оказалось очень простым, но делать его оказалось действительно интересно.
Нам понравилось делать не просто приложения на заказ, а реально полезные и интересные проекты, которые будут помогать людям! Нам понравилось принимать участие не только в создании программного кода, но и в изобретении самого продукта. С тех пор мы поняли, что будем брать только те заказы, которые нравятся нам самим, и которые могут стать популярными! Сейчас у нас в разработке находится три очень интересных проекта, которые действительно имеют хороший потенциал, и которые в своем роде являются уникальными. Очень надеюсь, что в следующих постах мне выпадет честь написать об одном из них.
Конечно, сейчас меня сразу спросят, не хотим ли мы в таком случае делать свои проекты. Разумеется, хотим, и планируем. Но правда состоит в том, что сделать чисто мобильное приложение, которое станет очень популярным, без дополнительных ресурсов (например, серьезной контентной базы) очень сложно. Поэтому мы объединяем свои ресурсы с ресурсами наших клиентов, и вместе стремимся создавать классные проекты.
Ну и мы, конечно же, ищем iOS и Android разработчиков, особенно в Москве :)
Мы получали огромное количество потенциальных заказов.
Очень много компаний хотели себе мобильное приложение, не отдавая себе отчета в том, что оно вообще может быть не нужно людям. Любой менеджер какой-нибудь компании, у которого был айфон или андроид, хотел заказать мобильное приложение для своей компании. Также очень много было смешных стартаперов, которые мечтали изменить мир, создав мобильное приложение — убийцу Foursquare. Мы старались обучать людей, рассказывать им о том, как и зачем люди используют мобильные приложения, и как их нужно делать, чтобы они нравились людям. Мы старались креативить для своих клиентов, придумывать что-то интересное и полезное. Мы старались не браться за скучные и неинтересные проекты. Но к сожалению, большинство заказов были именно такими.
Первый реально интересный проект
Первым реально интересным нашим проектом оказалось приложение Авто-Юрист.
К нам обратилась юридическая компания, специализирующаяся на автомобильных ситуациях. У них было очень много полезного материала, но они понимали, что информация на сайте носит слишком академический характер, и реально у людей нет возможности использовать информацию на практике.
Мы поняли, что приложение может стать реально популярным и полезным для людей, и нам стало интересно! Мы сами разрабатывали не только дизайн приложения, но и участвовали в подготовке материала. Нам предстояло обработать и структурировать его таким образом, чтобы людям было реально удобно использовать его на мобильном телефоне. Приложение получилось действительно красивым, удобным и понятным. Мы также занимались и продвижением приложения, в результате чего оно получило порядка 100 000 скачиваний. С технологической точки зрения приложение оказалось очень простым, но делать его оказалось действительно интересно.
И нам понравилось делать интересные проекты!
Нам понравилось делать не просто приложения на заказ, а реально полезные и интересные проекты, которые будут помогать людям! Нам понравилось принимать участие не только в создании программного кода, но и в изобретении самого продукта. С тех пор мы поняли, что будем брать только те заказы, которые нравятся нам самим, и которые могут стать популярными! Сейчас у нас в разработке находится три очень интересных проекта, которые действительно имеют хороший потенциал, и которые в своем роде являются уникальными. Очень надеюсь, что в следующих постах мне выпадет честь написать об одном из них.
Конечно, сейчас меня сразу спросят, не хотим ли мы в таком случае делать свои проекты. Разумеется, хотим, и планируем. Но правда состоит в том, что сделать чисто мобильное приложение, которое станет очень популярным, без дополнительных ресурсов (например, серьезной контентной базы) очень сложно. Поэтому мы объединяем свои ресурсы с ресурсами наших клиентов, и вместе стремимся создавать классные проекты.
Ну и мы, конечно же, ищем iOS и Android разработчиков, особенно в Москве :)
31.01.2012 18:29+0400
Песочница →
Управление Arduino с телефона
Добрый день!
Недавно заинтересовался идеей создания «умного дома». Так как из необходимых компонентов в моем распоряжении пока что имеются только arduino и телефон на андроиде, решено было начать с создания пульта управления и связи его с остальной частью системы.
Моё видение системы выглядит так:
Думаю стоит совместить домашний и веб-серверы, прикупив статический айпишник, но на первое время сойдет и так. Начнем с простого – научимся удаленно управлять светодиодом и LCD-дисплеем.
Недавно заинтересовался идеей создания «умного дома». Так как из необходимых компонентов в моем распоряжении пока что имеются только arduino и телефон на андроиде, решено было начать с создания пульта управления и связи его с остальной частью системы.
Моё видение системы выглядит так:
Думаю стоит совместить домашний и веб-серверы, прикупив статический айпишник, но на первое время сойдет и так. Начнем с простого – научимся удаленно управлять светодиодом и LCD-дисплеем.
27.01.2012 19:52+0400
Ни о чём →
Длительность непринятого вызова
Часто мне звонят, а я не могу ответить или нахожусь от телефона далеко. Однако, важность звонка я определяю только по количествам вызовов. Если же телефон со звуком, но я не могу ответить на вызов — важность звонка определяется длительностью музыки на рингтоне. Если вызов длится максимальное время (пока не человек сбрасывает, а оператор), значит вызов важен для вызывающего, а если 1-3 секунды — ошиблись номером или звонят друзья бомжи, например.
Я поискал в интернете хоть что-нибудь похожее на мою идею для андроида (а потом вообще для чего-либо звонящего) и ничего не нашёл.
Прошу помощи у хабрсообщества: если кто знает такую программу — поделитесь названием. Если кто напишет программу для дроида, даже куплю за разумные деньги. Если это совсем невозможно сделать (думаю, только под рутом можно отслеживать), объясните почему.
Я поискал в интернете хоть что-нибудь похожее на мою идею для андроида (а потом вообще для чего-либо звонящего) и ничего не нашёл.
Прошу помощи у хабрсообщества: если кто знает такую программу — поделитесь названием. Если кто напишет программу для дроида, даже куплю за разумные деньги. Если это совсем невозможно сделать (думаю, только под рутом можно отслеживать), объясните почему.
22.01.2012 01:04+0400
Реклама →
Приложение для рисования под Андроид
Полтора месяца назад я уже публиковал топик о приложении VoytPaint. Сейчас хочу немного рассказать, что было дальше и как приложение развивалось эти полтора месяца.
18.01.2012 11:49+0400
the_future_is_here →
Grand Theft Auto 3 уже доступен на Android и iOS
Мы не знаем, где вы были десять лет назад, но если вы играете во все игры, то с уверенностью можно сказать, что вы проводили немного времени за какой-либо частью знаменитой игры под названием Grand Theft Auto. Как было объявлено на прошлой неделе, компания Rockstar отпраздновала свой прыжок в открытый мир 3D игр путём выпуска третьей части игры под устройства на базе ОС Android и iOS. Следует отметить, что список совместимых устройств расширился по сравнению с прошлой неделей (игра работает на Galaxy S 2. Также было объявлено, что игру немного позже смогут завести и владельцы Galaxy Nexus). Путешествие в 2001 год обойдётся вам в 5$. На Android поддерживаются устройства как с сенсорными дисплеями, так и с USB клавиатурами.
Скачать можно здесь (Android Market) и здесь (App Store).
17.12.2011 17:01+0400
Песочница →
Идея мобильного приложения для наблюдателей на выборах
Начну, пожалуй, с того, что я, как и многие другие, подал заявку на включение меня в списки наблюдателей на предстоящие выборы, и, если все будет хорошо, буду выполнять эту почетную обязанность 4 декабря.
Чтобы быть готовым ко всему, я прочитал несколько брошюр, и практически в каждой авторы советуют производить некоторые подсчеты в уме/блокнотике, чтобы затем сравнить их с данными, вписанными в итоговый протокол. В частности, предлагается примерно считать количество проголосовавших, а также самому считать (хотя бы примерно) количество голосов за ту или иную партию вместе с комиссией (после вскрытия урн бюллетени разбираются членами комиссии, и каждый голос, поданный за партию, объявляется вслух).
Прошу прощения за такое продолжительное вступление, но оно, я думаю, поможет понять суть идеи. А идея проста — сделать приложение для наблюдателя на выборах, помогающее в подобных подсчетах. Я, к сожалению, не обладаю достаточным опытом, чтобы быстро и качественно написать такое приложение, но возможно, кто-то обладает достаточным временем, знаниями и инициативностью, чтобы реализовать идею?
Чтобы быть готовым ко всему, я прочитал несколько брошюр, и практически в каждой авторы советуют производить некоторые подсчеты в уме/блокнотике, чтобы затем сравнить их с данными, вписанными в итоговый протокол. В частности, предлагается примерно считать количество проголосовавших, а также самому считать (хотя бы примерно) количество голосов за ту или иную партию вместе с комиссией (после вскрытия урн бюллетени разбираются членами комиссии, и каждый голос, поданный за партию, объявляется вслух).
Прошу прощения за такое продолжительное вступление, но оно, я думаю, поможет понять суть идеи. А идея проста — сделать приложение для наблюдателя на выборах, помогающее в подобных подсчетах. Я, к сожалению, не обладаю достаточным опытом, чтобы быстро и качественно написать такое приложение, но возможно, кто-то обладает достаточным временем, знаниями и инициативностью, чтобы реализовать идею?
30.11.2011 03:33+0400
Язолъ →
Потерял Android-коммуникатор? Будь готов!
Привет, хабражители.
Потеря телефона — всегда неприятное событие. Но в сложившейся сейчас ситуации, когда и на сам смартфон, и на номер сим-карты завязаны почти все онлайн-сервисы, потеря телефона оборачивается настоящей головной болью.
Потеря телефона — всегда неприятное событие. Но в сложившейся сейчас ситуации, когда и на сам смартфон, и на номер сим-карты завязаны почти все онлайн-сервисы, потеря телефона оборачивается настоящей головной болью.
28.11.2011 19:17+0400
Android →
Ice Cream Sandwich на HTC Dream
Пока Google закапывает Nexus One и ещё несколько своих сервисов типа Knol, а вендоры смартфонов думают, какую бы крапварь присобачить к обновлениям Ice Cream Sandwich на трубки (и стоит ли вообще эти обновления делать), умельцы с XDA адаптировали ICS к первому гуглофону — HTC Dream. Не могу сказать, что увиденное меня восхитило, но получилось очень даже ничего для такой старой трубки (правда беспроводные интерфейсы не работают):
Для тех, кто подзабыл, что это за зверь, вот характеристики. Разработчики же, судя по всему, горят желанием из этой первой альфы сделать вполне работоспособную сборку.
Для тех, кто подзабыл, что это за зверь, вот характеристики. Разработчики же, судя по всему, горят желанием из этой первой альфы сделать вполне работоспособную сборку.
24.11.2011 13:08+0400
Песочница →
Android GT540: Увеличение размера раздела
Вступление
Пользователи андроид-смартфона LG GT540 знают, что официальная прошивка 2.1 перегружена предустановленным софтом, который в массе своей не нужен и бесполезен. Изначально мы имеем два раздела: /system (245 МБайт) и /data (138,5 МБайт). Весь предустановленный софт находится в /system.
Задачи и цели
Задача: удалить весь ненужный хлам из system и изменить размер этого раздела в пользу data.
Профит: получаем намного больше пространства на внутренней памяти, для инсталляции большего числа приложений, чем если бы мы могли это сделать ранее.
Сейчас у меня такая картина: /system 180Мбайт и /data 203.5Мбайт (и это не предел совершенства)
21.11.2011 19:20+0400
Реклама →
Самиздат — библиотека в кармане. Версия 2.0.1 Beta
Добрый день всем!
Большое спасибо всем кто нашел время и написал замечания на программу. Самое главное, что интерес к приложению есть, а недостатки буду устранять по мере наличия свободного времени.
Итак, что нового в версии 2.0.1 Beta:
1. Самое главное — добавлен поиск по автору.
В работе поиск по многочисленным параметрам, надеюсь выпустить до Нового Года.
2. Переделан механизм отображения произведений, оптимизирована работа с памятью.
К сожалению на слабых моделях телефонов с маленькой памятью остались проблемы с отображением очень больших текстов размером более 6Мб. Иногда не хватает памяти для загрузки и приложение может выдать ошибку. Повторное чтение произведения как ни странно проходит.
Если кто знаком с проблемой отображения больших текстов под Андроид — буду рад совету. Кеширование с дозагрузкой и тормозами прикручивать не хочется, нужно плавное прокручивание всего текста. Ранее пробовал TextView, сейчас ListView — использует меньше памяти.
"Самиздат" — чтение произведений с портала http://samlib.ru/.
Beta версия доступна по ссылке или воспользуйтесь приведенным ниже QR кодом:
Большое спасибо всем кто нашел время и написал замечания на программу. Самое главное, что интерес к приложению есть, а недостатки буду устранять по мере наличия свободного времени.
Итак, что нового в версии 2.0.1 Beta:
1. Самое главное — добавлен поиск по автору.
В работе поиск по многочисленным параметрам, надеюсь выпустить до Нового Года.
2. Переделан механизм отображения произведений, оптимизирована работа с памятью.
К сожалению на слабых моделях телефонов с маленькой памятью остались проблемы с отображением очень больших текстов размером более 6Мб. Иногда не хватает памяти для загрузки и приложение может выдать ошибку. Повторное чтение произведения как ни странно проходит.
Если кто знаком с проблемой отображения больших текстов под Андроид — буду рад совету. Кеширование с дозагрузкой и тормозами прикручивать не хочется, нужно плавное прокручивание всего текста. Ранее пробовал TextView, сейчас ListView — использует меньше памяти.
"Самиздат" — чтение произведений с портала http://samlib.ru/.
Beta версия доступна по ссылке или воспользуйтесь приведенным ниже QR кодом:
21.11.2011 14:19+0400
Песочница →
Русский рок в Android Market
Иногда в Маркете можно встретить довольно неожиданные вещи, например, сингл русской рок-группы. И, хотя появление подобных приложений в целом является хорошим знаком, реализация, о которой данный топик, весьма далека от идеала.
Рассмотрим детально данное чудо программной инженерии (сингл «Оптимист» группы «Би-2») и задумаемся, готовы ли мы покупать музыку, распространяемую подобным образом.
Рассмотрим детально данное чудо программной инженерии (сингл «Оптимист» группы «Би-2») и задумаемся, готовы ли мы покупать музыку, распространяемую подобным образом.
10.11.2011 03:37+0400
Песочница →
Использование TDD и MVP при создании приложений для Android. Часть 1 — Введение
Писать программки для смартфонов — мое хобби. Все началось с того, что я купил свой первый смартфон Nokia E51 на Symbian и мне очень нравилось что его функционал можно было расширить через установку дополнительных программ.
Но однажды я не нашел необходимой программы и решил написать ее сам. Так и началось мое увлечение программами для смартфонов.
После того как глава Nokia заявил, что дни Symbian сочтены, я решил изучить платформу Android.
Для лучшего усвоения материала я решил написать полезную, хотя бы для себя, программку. Но написать ее не по детски, когда куски примитивного кода копируются из документации, а по взрослому с разработкой архитектуры, и использованием современных технологий программирования TDD, MPV и IoС.
Мое первое приложение для Android — T-Alarm. Найти его можно на Android Market по названию. На данный момент в программе нет дизайна и она выглядит немного некузяво, но вскоре дизайн появится.
Это просто программа будильник, но с одной функцией, которой нет в других программах.
Обычно я встаю в 6:45 утра, но пару раз в неделю мне надо встать в другое время, например для утренней пробежки. Для этого надо изменить время в будильнике на завтра, а так же не забыть вернуть потом расписание в исходное. Все остальные будильники на Android не позволяют быстро поменять время на завтра, для этого надо долго ходить по настройкам, а так же никто из них сам не возвращает время в исходное состояние после срабатывания по измененному.
Поэтому я решил, что основной фишкой моей программы будет возможность однократного изменения времени следующего срабатывания, а также общий принцип, что для внесения изменений в расписание надо как можно меньше времени тратить на блуждание по настройкам.
Более того, будильник является отличной задачей, чтобы по глубже изучить платформу Andorid. Здесь затрагиваются такие части как:
— Пользовательский интерфейс. Надо сделать несколько окон для задания настроек.
— воспроизведение музыкальных файлов. Можно изучить возможности встроенного медиа-проигрывателя
— Сохранение расписания в БД. Теперь я знаю как пользоваться базой данных SQLIte на Android
— Реализация сервисов для отработки будильника. При наступлении часа Х надо запрограммировать следующий момент срабатывания, с учетом нескольких дреманий (snooze), и сыграть побудку. Прекрасный повод разобраться в том какие сервисы есть в Android и какой надо использовать.
— Получение различных сигналов от ОС. Сервис будильника должен срабатывать по системному будильнику и при загрузке смартфона.
Этой статей я открываю ряд статей, где хочу поделиться своим опытом разработки. Причем я хочу сосредоточиться на использовании MVP и TDD при разработке моего приложения. В интернете я нашел все это по кускам и смог собрать во едино. Это позволило мне сделать приложение в котором все основные алгоритмы протестированы с помощью UnitTest-ов, а так же я обраружл несколько других вкусностей, которые будут интересны Andorid разработчикам.
С самого начала я хотел разобраться как можно использовать современные подходы и шаблоны проектирования при разработке приложений для Android и поэтому много времени у меня ушло на изучения различных Framework-ов. Вроде бы в Android SDK уже встроен JUnit для организации тестов и есть много статей в интернете как им пользоваться, но как дело доходит реального проекта сразу появляются подводные камни. О том как их преодолеть я и расскажу в этом цикле статей.
Итак, я решил использовать TDD для того, чтобы быть уверенным, что все основные алгоритмы моего приложения протестированы. Так я остановился на шаблоне MVP при проектировании пользовательского интерфейса.
Мои исходники разделены на два проекта — основной проект с исходниками и тестовй проект с тестами.
Проект с исходниками состоит из нескольких пакетов. Как правило один пакет это одно архитектурное звено, то есть одна форма или сервис.
Каждое звено состоит из презентера (Presenter), представления (View) и, порой, из вспомогательных классов как правило для организации нескольких потоков. Хочу отметить, что представление это не всегда пользовательский интерфейс порой это классы для работы с системными сервисам, но для того, чтобы иметь возможность имитировать эти системные сервисы я выносил их во View, у которого есть интерфейс, а этот интерфейс легко имитировать в тестах.
Проект с тестами тоже разбит на пакеты. Каждый пакет содержит несколько тестов для соответствующего звена приложения.
Поскольку мое приложение маленькое, то в нем нет слоев, а есть только несколько звеньев:
1. Главное окно
2. Окно редактирования будильника
3. Окно выбора мелодии
4. Окно при звонке
5. Модель данных, в моем случае это список будильников, и репозиторий для сохранения модели в БД.
6. Сервис для обработки системных сообщений: наступление часа Х и загрузка смартфона.
Все окна и сервис работают только с моделью, которую получают из репозитория. Благодаря этому получается архитектура состоящая из слабосвязанных звеньев. Каждое звено можно тестировать отдельно от других имитируя модель.
Так же сама модель содержит сложную логику расчета следующего будильника, но модель так же легко тестируется, поскольку она не зависит от других звеньев.
В данной архитектуре непротестированными остаются только представления. Но код в них как правило предельно прост. Это просто маппинг параметров метода в контролы формы. Как правило этот код тестируется методом «пристального взгляда». А ошибки легко обнаруживаются когда вы видите что на форме не заполнен какой-то контрол.
В следующих статьях я подробнее остановлюсь на особенностях реализации отдельных звеньев, а так же расскажу какими инструментами, облегчающими жизнь разработчика, я при этом пользовался.
— Реализация пользовательского интерфейса, многопоточность, MVP
— Реализация серверной части, RoboGuice, тестирование
— Сохранение данных в БД, модель данных и репозиторий
— Небольшие задачи, настройки, логирование, ProGuard
Но однажды я не нашел необходимой программы и решил написать ее сам. Так и началось мое увлечение программами для смартфонов.
После того как глава Nokia заявил, что дни Symbian сочтены, я решил изучить платформу Android.
Для лучшего усвоения материала я решил написать полезную, хотя бы для себя, программку. Но написать ее не по детски, когда куски примитивного кода копируются из документации, а по взрослому с разработкой архитектуры, и использованием современных технологий программирования TDD, MPV и IoС.
Постановка задачи
Мое первое приложение для Android — T-Alarm. Найти его можно на Android Market по названию. На данный момент в программе нет дизайна и она выглядит немного некузяво, но вскоре дизайн появится.
Это просто программа будильник, но с одной функцией, которой нет в других программах.
Обычно я встаю в 6:45 утра, но пару раз в неделю мне надо встать в другое время, например для утренней пробежки. Для этого надо изменить время в будильнике на завтра, а так же не забыть вернуть потом расписание в исходное. Все остальные будильники на Android не позволяют быстро поменять время на завтра, для этого надо долго ходить по настройкам, а так же никто из них сам не возвращает время в исходное состояние после срабатывания по измененному.
Поэтому я решил, что основной фишкой моей программы будет возможность однократного изменения времени следующего срабатывания, а также общий принцип, что для внесения изменений в расписание надо как можно меньше времени тратить на блуждание по настройкам.
Более того, будильник является отличной задачей, чтобы по глубже изучить платформу Andorid. Здесь затрагиваются такие части как:
— Пользовательский интерфейс. Надо сделать несколько окон для задания настроек.
— воспроизведение музыкальных файлов. Можно изучить возможности встроенного медиа-проигрывателя
— Сохранение расписания в БД. Теперь я знаю как пользоваться базой данных SQLIte на Android
— Реализация сервисов для отработки будильника. При наступлении часа Х надо запрограммировать следующий момент срабатывания, с учетом нескольких дреманий (snooze), и сыграть побудку. Прекрасный повод разобраться в том какие сервисы есть в Android и какой надо использовать.
— Получение различных сигналов от ОС. Сервис будильника должен срабатывать по системному будильнику и при загрузке смартфона.
Этой статей я открываю ряд статей, где хочу поделиться своим опытом разработки. Причем я хочу сосредоточиться на использовании MVP и TDD при разработке моего приложения. В интернете я нашел все это по кускам и смог собрать во едино. Это позволило мне сделать приложение в котором все основные алгоритмы протестированы с помощью UnitTest-ов, а так же я обраружл несколько других вкусностей, которые будут интересны Andorid разработчикам.
Общая архитектуры проектов и приложения
С самого начала я хотел разобраться как можно использовать современные подходы и шаблоны проектирования при разработке приложений для Android и поэтому много времени у меня ушло на изучения различных Framework-ов. Вроде бы в Android SDK уже встроен JUnit для организации тестов и есть много статей в интернете как им пользоваться, но как дело доходит реального проекта сразу появляются подводные камни. О том как их преодолеть я и расскажу в этом цикле статей.
Итак, я решил использовать TDD для того, чтобы быть уверенным, что все основные алгоритмы моего приложения протестированы. Так я остановился на шаблоне MVP при проектировании пользовательского интерфейса.
Организация проектов
Мои исходники разделены на два проекта — основной проект с исходниками и тестовй проект с тестами.
Проект с исходниками состоит из нескольких пакетов. Как правило один пакет это одно архитектурное звено, то есть одна форма или сервис.
Каждое звено состоит из презентера (Presenter), представления (View) и, порой, из вспомогательных классов как правило для организации нескольких потоков. Хочу отметить, что представление это не всегда пользовательский интерфейс порой это классы для работы с системными сервисам, но для того, чтобы иметь возможность имитировать эти системные сервисы я выносил их во View, у которого есть интерфейс, а этот интерфейс легко имитировать в тестах.
Проект с тестами тоже разбит на пакеты. Каждый пакет содержит несколько тестов для соответствующего звена приложения.
Архитектура приложения
Поскольку мое приложение маленькое, то в нем нет слоев, а есть только несколько звеньев:
1. Главное окно
2. Окно редактирования будильника
3. Окно выбора мелодии
4. Окно при звонке
5. Модель данных, в моем случае это список будильников, и репозиторий для сохранения модели в БД.
6. Сервис для обработки системных сообщений: наступление часа Х и загрузка смартфона.
Все окна и сервис работают только с моделью, которую получают из репозитория. Благодаря этому получается архитектура состоящая из слабосвязанных звеньев. Каждое звено можно тестировать отдельно от других имитируя модель.
Так же сама модель содержит сложную логику расчета следующего будильника, но модель так же легко тестируется, поскольку она не зависит от других звеньев.
В данной архитектуре непротестированными остаются только представления. Но код в них как правило предельно прост. Это просто маппинг параметров метода в контролы формы. Как правило этот код тестируется методом «пристального взгляда». А ошибки легко обнаруживаются когда вы видите что на форме не заполнен какой-то контрол.
В следующих статьях я подробнее остановлюсь на особенностях реализации отдельных звеньев, а так же расскажу какими инструментами, облегчающими жизнь разработчика, я при этом пользовался.
Читайте в следующих статьях
— Реализация пользовательского интерфейса, многопоточность, MVP
— Реализация серверной части, RoboGuice, тестирование
— Сохранение данных в БД, модель данных и репозиторий
— Небольшие задачи, настройки, логирование, ProGuard
27.10.2011 23:33+0400
Язолъ →
AdMob и порно баннеры
Моя программа “250+ Solitaire Collection” для Android приносит мне неплохой доход за счет рекламы. Работаю я с сервисом AdMob от Google. До последней недели я был вполне удовлетворен тем как работает сервис. Но последние несколько дней поменяли мое мнение на противоположное.
18.10.2011 12:58+0400