Мое первое приложение под Android
В качестве своего первого приложения я решил «нарисовать» симпатичный виджет для отображения актуального баланса на мобильном. Сейчас пользуюсь life-ом (это украинский сотовый оператор). Потому виджет в первую очередь поддерживает именно этого оператора. Виджет разработан, опубликован на маркете и немного попиарен на профильных форумах. Знаете ли, мне понравилось! Дальше — о том, как это было, мои впечатления о Android и разработке под эту платформу, о статистике и вообще о полученном результате.

Страничка приложения — piBalance.
Я начинал писать виджет как свое первое приложение под Android, которое хотел довести до стадии публикации на маркете. Идея создания такого виджета лежала на поверхности. Быстрый поиск по маркету не дал ничего вразумительного. Я удивился. Как? Нету такого вот простого виджета? У всех операторов есть ведь USSD-запросы по типу *111#. Оказалось, не все так просто. Потом нашлось несколько похожих разработок (раз, два). Первая — навороченный монстр. Второе — уже не поддерживается автором и не доступное на маркете. Кстати, все они запрашивали баланс через SMS. А первое еще и через интернет.
Для начала я нарисовал приблизительные задачи в гуглодокументе. Это приоткрыло глаза на объем работ. Да и легче при наличии свободного времени взять небольшую таску, сделать ее и закрыть. Так проще переключиться на работу и видно результат. Чистое время затраченное на каждую из них зафиксировано в этом-же документе. Это помогает трезво подходить к планированию следующих итераций.
Потратил очень много времени для того, чтобы понять — c USSD в Android все очень плохо. Оставалось несколько путей для получения баланса: интернет и смс. Интернет платный и требует многих настроек в виджете. А смс-запросы поддерживаются очень немногими операторами. Т.к. виджет должен быть воплощением принципа «KISS», остались только СМС. Благо, мой родной Life:) их поддерживает. И началось.
Впечатления от разработки. Хороший SDK, документация, много примеров. Я с ужасом вспоминаю тот небольшой опыт разработки под Symbian UIQ3. Есть даже некоторые книги на руском. Отладка как на эмуляторе так и на железке абсолютно идентична. Фантастика! Логгер также прозрачно работает как с эмулятором, так и с железкой. Кстати, у меня LG GT540. На нем и проходило «железное» тестирование и отладка.
Ньюансов, тем не менее, было множество. Поэтому само приложение получилось достаточно сложным. Все-таки нужно учитывать многие аспекты именно мобильной платформы. Оказалась проблема с нотификациями о полученных сообщениях. Если удалять служебные входящие сообщения можно с рядом оговорок, то подавить стандартную нотификацию о входящем смс можно только до Android 2.1. Грязным хаком. Из-за этого у приложения серьезный минус — на 2.1 и выше постоянно будет висеть иконка с непрочитанным сообщением после получения баланса.
Хорошо продумана в Android поддержка различных экранов. Как по разрешению так и по плотности пикселей. Достаточно сделать графику в трех разных разрешениях и разложить по разным папочкам. Графическое оформление виджета помог сделать ballista. За что ему спасибо и поток новых клиентов.
Публикация в маркете очень проста. Регистрация стоит 25$ и успешно списывается с карты украинского банка. Статистика по приложению обновляется только раз в сутки. Так я заметил. На сегодня приложение скачали 184 раза, реально оно используются на 63 устройствах.
Я создал несколько тем с описанием приложения на разных профильных форумах. Это дало некоторый полезный фидбек и кучу удивлений, почему приложение не работает через USSD.
Планируется дальнейшее посильное развитие как вширь, так и вглубь. Вширь — добавить росийский МТС и Мегафон. Вглубь — статистика, умный планировщик запросов и нотификация о заканчивающихся средствах на счету.
Достигнута цель попробовать Android изнутри. А еще очень приятно повседневно пользоваться тем, что сам сделал. Вот так вот
Кто попробовал, отпишитесь о впечатлениях в комментариях.
На заглавном просто-фото — офис Microsoft в Кёльне, Германия. Башенный кран как бы напоминает — Win Phone 7 еще строится. Фото автора


Отзывы
Андрей (28 Сен 2010)
Супер!
Еще бы поддержку кастомных USSD сделать.
Молодец, так держать!
Алексей Масный (29 Сен 2010)
Приложение работает НЕ через USSD
taicamp (29 Сен 2010)
Интересный Вы разработчик. Будем за Вами следить
dmitry (01 Окт 2010)
Всего два комментария, и оба про USSD, неужели комментируете статью, которую даже не прочли?
Виджет отличный, пользуюсь.
Не планируется ли сделать его опен сорсным?
Алексей Масный (01 Окт 2010)
А на какой железе пользуетесь?
Думаю, что сделаю открытым. Что тут скрывать:-)
dmitry (02 Окт 2010)
У меня такой же телефон как и у вас: lg gt540.
Дмитрий (26 Окт 2010)
Очень понравился ваш виджет, но так как у меня Киевстар, воспользоваться им не могу. Спасибо вам за работу, буду ждать дальнейшего развития:)))
Алексей Масный (26 Окт 2010)
Как бы заставить Киевстар сделать такую простую, казалось бы, услугу..
Андрей (03 Ноя 2010)
Визжат не может распознать баланс в такой смске : «03.11.2010 13:55:22 OCTATOK: 168.53 p., Бонус:79.09 Замени гудок на Мега-хит! Звони и выбирай 0770″. Можно заставить его это сделать?
Алексей Масный (03 Ноя 2010)
Сейчас — нет. К сожалению. В следующей версии — да. Будет возможность выбрать какое значение из смс использовать как баланс.
Андрей (03 Ноя 2010)
Спасибо, ждем новую версию
dmitry (04 Ноя 2010)
В твитере прочел про первые 100$, заработанные на на Android. Это именно с piBalance деньги? Я рекламы в нем не увидел встроенной, каким образом получилось заработать?
Алексей Масный (04 Ноя 2010)
Не, piBalance корова не дойная. Растет. Кормлю ее своим временем, отчасти деньгами. Может вырастет. А деньги эти со стороннего небольшого проекта.
dmitry (04 Ноя 2010)
А не подскажете как треды создавать в андроиде? Я сделал как привычно в джаве, но у меня приложение вылетает при запуске.
Алексей Масный (04 Ноя 2010)
Пока не было опыта, поэтому не подскажу. Делал AsyncTask чтобы не блокировать UI для долгоиграющих задач. Он на основе Thread.
dmitry (05 Ноя 2010)
Кстати,а что это за фотография на странице, которая рвет интерфейс?
dmitry (05 Ноя 2010)
В piBalance есть синтаксическая ошибка: «Вся соль приложения – виджет. Обязательно ДОБАВТЕ его на домашний экран». Пропущен мягкий знак в слове «добавьте».
Алексей Масный (05 Ноя 2010)
Да, и вправду есть ошибка. Спасибо. Поправлю в следующей версии. Она, кстати, уже имеет совершенно другой интерфейс. А описание для фото есть в конце поста.
dmitry (05 Ноя 2010)
Опишу свое впечатление по поводу разработки под Android. Задался я целью написать парсинг с сайта своего интернет провайдера для отслеживания счета. Оказалось что многие либы, даже такие как httpClient от apache уже встроены в SDK Android. Для меня было затруднительно разобраться с построением интерфейса. Ну а вообще, имея опыт в джаве несколько лет, разработка не вызывает особых затруднений.
dmitry (05 Ноя 2010)
Если к текущей странице в тег фотографии img добавить width=»550″ то картинка не разлазится и страничка выглядит гораздо оккуратней.
SemenSemenych (09 Ноя 2010)
Вот любопытно, если телефон зарученный, чисто теоретически можно получить доступ ко всему подряд, это же линух по сути. Неужто на рученых телефонах нет возможности работать с USSD? Или эта возможность лежит в недокументированной области пока?
Алексей (09 Ноя 2010)
Пользуюсь второй день. По удобности – получилась прелесть. Единственное, что не совсем понравилось – это отображение количество СМСок полученных, хотя если уменьшить и поменять цвет, то можно использовать как счетчик звонков за день. Правда тогда сброс нужно реализовать. Работает стабильно. Принцип запроса баланса (уссд или СМС) не напрягает, поскольку на результат работы не влияет.
Хотелки:
1. Статистика (день, месяц, среднее за и т. д.)
2. отображение о стоимости последнего звонка (вкл/выкл)
3. отображение о расходах за день (вкл/выкл)
Аппарат – Дизайр.
А в общем спасибо. Получил почти то, что хотел.
3.
3.
Алексей Масный (09 Ноя 2010)
На рутованых такая возможность должна быть. Конечно, это не документировано. Но ведь есть все исходники и по ним можно понять, как например работает с ussd стандартная звонилка. Т.е. потенциально это возможно. Времени бы на исследования накопать..
Алексей Масный (09 Ноя 2010)
2. отображение о стоимости последнего звонка (вкл/выкл)
уже сделано, будет в след. версии. Сейчас уже можно попробовать
3. отображение о расходах за день (вкл/выкл)
это как раз и показывается округленно на виджете в правом верхнем углу, а в самом приложении более точно, с копейками.
Алексей (09 Ноя 2010)
Извини Алексей, протупил про правый верхний угол. Принял это за: » Из-за этого у приложения серьезный минус — на 2.1 и выше постоянно будет висеть иконка с непрочитанным сообщением после получения баланса.»Тогда у меня вообще нет уведомления о полученном СМС. Версия Андроида 2.2.
Алексей Масный (09 Ноя 2010)
С тех пор приложение очень сильно изменилось. В описании на маркете уже давно нету этого примечания. Теперь действительно все работает тихо и незаметно.
Иван (10 Ноя 2010)
А добавить БИЛАЙН не планируете?
iz (10 Ноя 2010)
отличное приложение, пользуюсь на xperia x10mini.
не хватает настроек частоты обновления
Алексей Масный (10 Ноя 2010)
К сожалению это не возможно — http://pibalance.reformal.ru/proj/?ia=101699
Алексей Масный (10 Ноя 2010)
Запишите вашу идею здесь, если не сложно. Спасибо.
Юра (11 Ноя 2010)
Хотелось бы получить Билайн и ТЕЛЕ2.
Павел (12 Ноя 2010)
МТС-Москва, рутованная Samsung Galaxy Spica 2.1 — баланс не отображается, по нажатию кнопки «Обновить» появляется надпись «Запрос отправлен. Ожидаем ответа» и далее тишина, виджет показывает 0.
Алексей Масный (12 Ноя 2010)
Попробуйте отправить сообщение на номер 111 с текстом 11. Если не придет ответ в смс, значит что-то у МТС случилось.
dim (15 Ноя 2010)
Великолепная работа.Первая программа про баланс, которая меня полностью устроила. Спасибо!
lmp44 (15 Ноя 2010)
Планируется ли оператор Tele 2? по России???
Алексей Масный (15 Ноя 2010)
Теле2 не поддерживает запрос по смс.
Дмитрий (16 Ноя 2010)
Программа отличная.
Всё здорово.
Один вопрос, Алексей:
что это за цифры в правом верхнем углу виджета, на голубом фоне?
у меня было «7″, сейчас стало «1″.
Алексей Масный (16 Ноя 2010)
это округленные расходы за день. В самом приложении более точные данные.
Дмитрий (16 Ноя 2010)
Вас понял. Спасибо, Алексей, за программку
igor (17 Ноя 2010)
Когда должна обновляться информация в верхнем квадратике?
Константин (17 Ноя 2010)
После обновления виджет не показывает, что оператор МТС. В старой версии все работало нормально.
Алексей Масный (17 Ноя 2010)
Это изменение вашего баланса за текйщий день. Если что-то потратите, больше чем 0.50, отобразится 1.
Piter (20 Ноя 2010)
Прилолжение очень радует!
После стати скачал SDK и начал копать во все стороны о разработке под андроид, т.к. идей много, но они пока только идеи
Работаю на маке, опыт разработки приложений ≈ 0, посмотрим, за сколько в это въеду.)
*на Ваш сайт попал из статьи на http://www.droidnews.ru/
Mikola1st (23 Ноя 2010)
Спасибо за работу! У меня Acer Liquid 2.1-update1, ядро 2,6,29, сборка T&L_v0.2, рутованный. Все работало замечательно, в какой-то момент тело совершал звонок, смотрю – а сигнала то нету… хз… перезагрузил трубу и опять все замечательно, месяц как….
Mikola1st (23 Ноя 2010)
Хочу Вас спросить что есть кнопка «тюнинг»???
Mikola1st (23 Ноя 2010)
узнал о Вас от 4pda.ru
forbrand (29 Ноя 2010)
Вы не могли бы мне помочь с отправкой USSD? У меня XT720 корейской версии и когда я в Dialer-e набираю USSD запрос то Дайлер автоматически подставляет – например набираю *100# а выходит *-100# и от этого когда нажимаю гудок то оператор отвечает что набран не существующий номер. Пробывал через другие приложения результат тот же. Вы бы не могли подсказать что можно с этим сделать? Переустанавливал прошивку так с другими прошивками многие функции урезаются наверное из-за того что аппарат привязан как-то к корейскому оператору что даже при смене прошивки возникают ограничения.
krant (11 Янв 2011)
Отличный виджет, спасибо вам!
HTC Legend, Android 2.2, Мегафон-Москва.
Alex (21 Янв 2011)
Спасибо!
1. Копейки в виджете нужны.
2. Обновление по рассписанию тоже.
А так всё устраивает!
Андрей (26 Янв 2011)
Почему не работает виджет через USSD запросы?
Будет ли возможность у проги через USSD запросы работать в будущем? Спасибо!
Артем (06 Фев 2011)
Программка полезная. А двух симочные телефоны не поддерживает. Или ПОКА не поддерживает?
Сергей (18 Фев 2011)
Спасибо ! Приложение отличное . Ещё бы добавить *100*2# бонусная тема МТС минуты , смс , интернет .
mindstalker (04 Мар 2011)
Нашел на 4pda тему где описывается, как обрабатывать USSD запросы:
http://4pda.ru/forum/index.php?showtopic=222811
Там есть исходный код соответствующего класса и даже тестовое приложение (тоже с исходником). Автор темы пишет, что все работает.
Алексей Масный (09 Мар 2011)
Спасибо за интересную наводку! Прошу прощения, что долго не отвечал. Возможно, приложение сможет нормально работать с USSD
дениско (27 Апр 2011)
Спасибо большое! Раньше пользовался баланс робот, его перестали поддерживать, а это хорошая альтернатива.
dmitry (09 Июн 2011)
а нельзя ли добавить в метод виджета удаление сервиса из автозагрузки при удалении виджета с рабочего экрана? Сейчас после удаления виджета с экрана сервис постоянно висит в памяти даже после перезагрузки девайса
Soldier (05 Июл 2011)
Пользую четыре дня на HTC Desire – в восторге! Перечитав комменты обнаружил значение беспокоящего меня синенького квадрата с циферкой – успокоился.
К2 (02 Ноя 2011)
Поддержку украинских оперетороа сделайте gj;fkeqcnf (life, kyivstar).
Nil (10 Янв 2012)
Здравствуйте, сег. установил данную програмку, Живу в Казахстане, оператор Аctiv (kcell)? что то не работает у меня, устройство андройд 2,3,4, пишет что отправлен запрос и что ожидается ответ, и ВСЕ…, проверяем мы так же как и все через *111# спасибо
Ханлар (13 Янв 2012)
Пожалуйста добавьте оператора Azercell из Азербайджана.
Мишан (22 Янв 2012)
Почему бы не сделать вывод на виджет не только суммы баланса, но и других чисел (мегабайт интернета, бонусов и т.д.)
Александр (12 Мар 2012)
Очень понравилось.Как настроить на билайн и теле2.Спасибо!!!