Лучший способ учиться — это делать, поэтому он часто берет небольшие побочные проекты, чтобы подобрать новую технологию. В этой статье представлен один из его проектов — приложение отслеживания использования для Android под названием NodeDroid.
Профилирование Android
Около года назад появилось новое поколение телефонов Android, и кайф был в том, что Android теперь может конкурировать с iOS за функции и желательность. Я уже сделал несколько кодов для iPhone, плюс я был в поиске нового телефона, так что я подумал, что это будет хорошая возможность изучить новую технологию и, надеюсь, создать что-то полезное, пока я на нем.
Быстро и безболезненно
Когда я решал, какое приложение написать, я хотел, чтобы оно было простым, по нескольким причинам. Во-первых, я хотел изучить API и не перегружать себя. Во-вторых, делая это проще, я бы с большей вероятностью быстро закончил и выложил это на всеобщее обозрение.
Публикация моего приложения была важна, так как я хотел сравнить опыт разработки под Android с iOS. Мы все слышали истории о том, что пришлось столкнуться с таинственным процессом одобрения Apple, и Google должен был быть намного проще. Поэтому я пошел в местный телефонный магазин и вернулся с новым Samsung Galaxy S i9000.
Еще одна вещь, которую я хотел опробовать, была мобильная реклама. Опять же, мы все слышали о том, что люди могут зарабатывать больше на рекламе приложений, чем на выручке от продаж в магазинах. Я не ожидал многого, но единственный способ понять что-то — это сделать это. Для рекламы я выбрал AdMob, поскольку в то время он представлял собой выдающуюся платформу.
Принимая цель
Я хотел написать что-то, что было бы полезно для моей целевой аудитории: меня. Я остановился на написании приложения для проверки использования, которое будет показывать использование полосы пропускания моего телефона (Optus) и моего домашнего интернет-провайдера (Internode), чтобы убедиться, что я не перешел свои квоты. Это будет называться NodeDroid. Большинство существующих приложений для проверки использования для Android либо очень простые, либо работают только для одного провайдера, и эту информацию я постоянно проверяю. Больше информации о NodeDroid можно найти на 8bitcloud
Ознакомившись с техническими подробностями программирования для Android , я начал думать о том, как должно работать приложение, и именно здесь я заметил первые различия между iOS и Android. Apple сделала все возможное, чтобы указать, как вы будете взаимодействовать с iOS и рекомендациями по пользовательскому интерфейсу. Конструктор графического интерфейса помогает разработчикам создавать макеты, похожие на пользовательские интерфейсы Apple.
Хотя в Android также есть рекомендации по пользовательскому интерфейсу, они менее строго соблюдаются. Построитель GUI, встроенный в Eclipse для Android, ужасен, это означает, что большинство людей в конечном итоге будут создавать свои интерфейсы вручную в XML, а не с помощью построителя GUI, что часто приводит к уродливым интерфейсам. работать лучше, чем встроенные в GUI, но вам нужно приложить больше усилий, чтобы сделать их правильными).
Другие люди отмечают, что опыт работы с Android не такой стабильный, как у iOS, и, на мой взгляд, это одна из причин, почему. Я все еще хотел получить хороший опыт, поэтому много усилий было потрачено на правильную работу жестов, включая анимацию между состояниями. Я был немного разочарован, что это не сработало из коробки. Некоторые из них требуют специализированного кодирования, о котором я расскажу в другом посте.
Анатомия мобильного приложения
Важно, чтобы приложения были простыми. Хотя заманчиво поместить в приложение целую кучу вещей, для мобильных устройств ограничения экранной недвижимости и механизмов ввода означают, что зачастую меньше значит больше. Я не хотел много кнопок в моем приложении; Кнопки, как правило, запрещены в мобильных приложениях, а жесты — лучший способ взаимодействия.
Цвет также является важным инструментом, который позволяет различать различные компоненты. NodeDroid поддерживает учетные записи от нескольких поставщиков, каждый из которых отображается на отдельной странице. Раскраска страниц цветами каждого провайдера означает, что они сразу узнаются по бренду. Счета междоузлий оказались оранжево-красными, а Optus — желтыми. Я не являюсь художником-графиком, поэтому результат был лишь частично успешным, но я доволен пользовательским интерфейсом, который обеспечивают цвета. Эффект был бы еще сильнее с логотипами.
Последний аспект пользовательского опыта, который я хотел получить, заключался в том, как показать результаты. Самый легкий для чтения формат информации — это графики. Я искал доступные библиотеки черчения и нашел несколько , но они были слишком сложными или слишком незрелыми. В конце концов, поскольку графики, которые я писал, были очень простыми, я написал свои собственные компоненты для рисования графиков.
Объединяя это
Так как же это закончилось? Первая версия приложения была быстро разработана. Этому способствовало использование Java в качестве языка программирования, потому что я профессиональный программист на Java, и переключение на API Android было проще, чем изучение Objective-C для iOS. Работа с Eclipse в качестве инструмента, на мой взгляд, намного проще, чем ужасный XCode. Кроме того, большинство Java API работают очень хорошо на Android, а это значит, что их уже много.
Публикация на рынке Android была на одном дыхании. После единовременного регистрационного взноса в 25 долларов США (дешевле, чем в 99 долларов США в год) я мог сразу же опубликовать свое приложение через прямой веб-интерфейс. Это было особенно полезно, когда я обнаружил ошибку в первом выпуске, и мне нужно было немедленно переиздать, чтобы исправить ее. Если бы я имел дело с Apple, у меня могла бы быть целая паника по поводу выпуска новой версии, но на Android это было просто вопросом загрузки нового пакета приложений и повторного нажатия кнопки «Опубликовать». В консоли разработчика на рынке также есть множество удобных инструментов для составления отчетов, которые дают отличные отзывы о загрузках, проблемах и комментариях.
Реклама была смешанной. Хотя установка и использование рекламы была простой, и у меня был разумный рейтинг кликов, когда объявления были доступны, часто служба не могла предоставлять рекламу по запросу, что приводило к недостаточному количеству показанных объявлений (так называемый коэффициент заполнения). Когда это произошло, это в значительной степени остановило доход. В итоге я заработал около 20 долларов на рекламе, прежде чем закончил эксперимент через два месяца. Это звучит ужасно, но помните, что это маленькое приложение с несколькими тысячами пользователей. Это не будет оплачивать счета, но я понимаю, почему людям нравится такой подход: если у вас есть популярное приложение с десятками тысяч пользователей, доходы от рекламы могут начать расти.
проблемы
Одной из проблем, которую я считал неизбежной, было бы огромное разнообразие экранов разных размеров и версий Android, также известных как «фрагментация». Люди суетятся из-за этого, но я не могу сказать, что у меня действительно была проблема. Инструменты Google позволяют ориентироваться на конкретную версию, и, если вы готовы обходиться без новейших API, вы можете легко ориентироваться на довольно старые устройства. Мне пришлось внести некоторые коррективы, но было легко настроить таргетинг на все устройства Android 1.6+.
Разрешение экрана было немного сложнее. Вы склонны писать свое приложение для одного разрешения экрана, а затем посмотреть, насколько хорошо оно работает в других. К счастью, Google предоставил довольно хорошие инструменты для хорошего масштабирования пользовательского интерфейса, и если вы правильно пишете приложение, оно должно работать без сбоев. Я не скажу, что мое приложение отлично работает на каждом экране, но в большинстве случаев оно работает хорошо. В конце концов, фрагментация действительно не стала для меня большой проблемой.
Будущее
Есть много улучшений, которые я мог бы внести в свое маленькое приложение. Я хочу добавить виджет домашнего экрана, плюс было бы здорово добавить к нему дополнительных сетевых провайдеров. Я все еще пытаюсь решить, как сделать это безопасным способом, чтобы соавторам не приходилось делиться со мной паролями. Трудно отлаживать без учетной записи для работы.
В качестве первого шага я открыл приложение с открытым исходным кодом, оно доступно в моем репозитории GitHub NodeDroid . Если вы просто хотите попробовать приложение, вы можете получить его из Android Market . Я также буду признателен за любые ваши отзывы о приложении или за любые статьи или методы, которые вы хотели бы написать на buildmobile.com.