четверг, 24 мая 2012 г.

Использование websoсket в Android

Самые интересные Android-приложения, по-моему, те, которые позволяют взаимодействовать пользователям на различных устройствах. Например, сетевые игры, коммуникационные и социальные приложения. В разработке таких программ мы должны использовать широкий спектр технологий, и, соответственно, имеем большой простор для творчества, для построения интересной архитектуры.
Я уже описывал некоторые своеобразные решения для клиент-серверного взаимодействия в мобильных приложениях, но сегодня мы познакомимся, вроятно, с самым интересным инструментом для решения таких задач: с технологией websocket.
В чём её прелесть? Практически полный реалтайм, минимальные накладные расходы на передачу данных, возможность реализовать любой, даже бинарный протокол "внутри" websocket-а, и самое приятное: простота реализации и готовые библиотеки. С этим давайте и разберёмся подробнее.

вторник, 22 мая 2012 г.

Играем с акселерометром в Android

И ещё одно замечательное устройство в нашем Android-девайсе дождалось своего примера использования. Использование акселерометра занимает особое место в приложениях (особенно в играх) для Android. Камерой и микрофоном мы могли бы пользоваться и в ноутбуке, а вот этим устройством - вряд ли. Только смартфоном можно размахивать из стороны в сторону в игровом процессе, и тут не обойтись без снятия данных с датчика ускорения. Сам процесс получения данных с акселероматра очень прост и не заслуживает отдельной статьи, поэтому мы сделаем небольшую игру, построенную на использовании акселерометра.
Принцип игры будет заключаться как раз в "размахивании" смартфоном: нужно будет махнуть сильнее чем противник, желательно не разбив аппарат при этом ;)
Как и у всякой приличной игры будет возможность сохранить свои достижения и т.п. Итак, приступим:

понедельник, 14 мая 2012 г.

BroadcastReceiver: общение процессов в Android-приложении

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

воскресенье, 13 мая 2012 г.

Работа с GPS и Google Maps в Android

Продолжаем осваивать аппаратные возможности Android-смартфонов. В предыдущих постах мы  изучили, как использовать в наших приложениях микрофон и камеру. Теперь возьмёмся за более сложную тему: GPS. Сложность, конечно же, относительная. В сети есть масса примеров кода, с помощью которого можно получить координаты клиента, поэтому чтобы сделать наш пример интереснее, соединим получение координат с их использованием. В этой статье вы узнаете как получить доступ к Google Maps API, отобразить карту с различными её "плюшками" и вывести на неё наши координаты, полученные различными способами: по спутникам, данным мобильной сети или wifi.
Итак, приступим:

четверг, 10 мая 2012 г.

Работа с камерой в Android-приложении


За что особенно люблю Andriod - так это за обилие аппаратных "плюшек". Тут тебе и микрофон/динамик и gps и wifi, тут и фото/видео камера и так далее... В результате способов применений у этого маленького девайса, а значит простора для программиста, который под него пишет - очень много.
Я уже писал о работе с микрофоном в Android-приложениях, сегодня удостоим внимания камеру. Примеров того, как реализовать простое приложения для фотографирования достаточно много, поэтому в этой статье я покажу кроме всего прочего, как работать с полученной фотографией, в частности как её обрезать. Наше простое приложение может не только сфотографировать вашего знакомого, но и выделить его лицо из кадра, например для сохранения в списке контактов.

понедельник, 7 мая 2012 г.

Пишем скрипты в Google Spreadsheet

В далёких 90-х я начинал осваивать программирование, и первые мои "коммерческие" приложения были написаны на VBA под MS Excel. До сих пор помню как удобно было работать, имея готовый интерфейс, функции для манипуляции данными и адресуемые ячейки... Этот, в принципе, нормальный путь для обучения программированию, сейчас имеет несколько недостатков. Во-первых, нехорошо с первых приложений связывать себя с поприетарной средой разработки и исполнения кода, а во-вторых, кому сейчас нужен Visual basic?. Вот JavaScript и GoogleDoc - другое дело. Да и возможностей, учитывая "web-интерфейсность" среды исполнения и открытые API, существенно больше.
Чтобы помочь тем кто заинтересуется программированием "под ячейки", предлагаю тут простой "урок" по созданию скриптов для Google Spreadsheet.

суббота, 5 мая 2012 г.

Использование OAuth2 авторизации в Android-приложении

Первое, что делает клиент, получив в руки новый Android-девайс - привязывает его к своему google-аккаунту. Эта привязка даёт ему возможность пользоваться всеми сервисами google, а нам, разработчикам - предоставлять ему все эти сервисы с помощью наших приложений. Google даёт нам доступ через API к удивительно богатой инфраструктуре: документы, почта, задачи, поиск, переводчик, распознавание голоса и т.п. И всё это почти бесплатно и очень удобно для клиента с Android в руках. Ключ ко всему этому богатству - OAuth-авторизация. Давайте разберёмся, как ей пользоваться. Наш небольшой пример запросит у клиента доступ к сохранённому на Android-устройстве аккаунту, получит токен, сохранит его для будущего использования, а затем будет полчать список документов в корне его GoogleDoc (или GoogleDrive, как это теперь называется) и отображать полученный список клиенту.