Thursday, March 28, 2013

Превращаем Android-смартфон в автомобильный видеорегистратор


В начале марта запустил, наконец, на Play Store видеорегистратор, который вместе с партнерами разрабатывали еще с осени. В общем, никакой магии: работа с камерой, GPS, карты, медиаплеер, графопостроитель для статистики скорости. Ну и кастомный UI, который готовил профессиональный художник.

Технически наибольшую сложность представляет работа с камерой и сопровождающим ее MediaRecorder – Android SDK выдвигает своеобразные требования к их настройке, и, судя по всему, некоторые производители смартфонов трактуют их по-своему. Стабильности во включении записи видео на некоторых особо «чувствительных» аппаратах удалось добиться только экспериментальным путем, переставляя порядок установки свойств в MediaRecorder. Хотя и это не гарантирует 100% результат, в креш-репортах, которые мы собираем с помощью ACRA, иногда все еще проскакивают невразумительные коды ошибок инициализации.

Другая технически интересная деталь в этом приложении – запись видео в фоновом режиме. Формально запись видео в фоне ставит под угрозу приватность пользователя, и на странице поддержки Android даже голосуют за нее как за отдельную фичу – ввести соответствующий <uses-permission>. Пока же приходится делать костыль путем «сворачивания» SurfaceView с предпросмотром с камеры (что, вероятно, должно гарантировать осведомленность пользователя о ведущейся видеозаписи) в 1 точку на экране, помещенную в WindowManager . Такой трюк работает на Android 2.*, но в Android 4 он крешится без веских объяснений, потому здесь эту возможность мы пока отключили. 

Thursday, February 28, 2013

Дополненная реальность для смартфонов


Пару месяцев назад понадобилось разработать экспериментальное приложение для Android, которое проецировало бы на картинку с камеры маркеры или другие объекты. Потому хорошо познакомился с существующими фреймворками дополненной реальности (Augmented Reality, AR), ниже приведу краткую информацию о некоторых из них.


1) Metaio
Платформы:  Android, iOS, Windows PC
Лицензия/стоимость: Платный SDK
Примечания: Полный спектр AR-технологий

2) Junaio
Платформы:  Android, iOS
Лицензия/стоимость: Якобы бесплатный, но есть скрытая система монетизации
Примечания: Является надстройкой над Metaio; сложность в настройке; нацелен на использование LLA маркеров

3) ArLab
Платформы:  Android, iOS
Лицензия/стоимость: Платная, даже за доступ к tutorials
Примечания: Полный спектр AR-технологий

4) Satch
Платформы:  Android, iOS, Mac OS, Windows PC, Adobe Flash Player
Лицензия/стоимость: Бесплатно
Примечания: Хорошо проработана документация; используется Lua scripting language

5) Wikitude
Платформы:  Android, iOS,  BlackBerry 10, PhoneGap
Лицензия/стоимость: платная
Примечания: Полный спектр AR-технологий; встраивается как HTML5/CCS3 элемент, потому код легко переносится между платформами

6) AndAr
Платформы:  Android
Лицензия/стоимость: GPLv3
Примечания: Проект 15-летнего индуса по имени Raghav Sood, который он позже развил в книгу Pro Android Augmented Reality; слабая поддержка; работает медленно

7) DroidAR
Платформы:  Android
Лицензия/стоимость: GPLv3
Примечания: слабая поддержка и видеозаписи вместо документации

8) Mixare
Платформы:  Android, iOS
Лицензия/стоимость: GPLv3
Примечания: Geodata-based; слабая документация

Sunday, January 20, 2013

DOU: Старт ИТ-карьеры


Наткнулся на DOU.ua на статью, интервью для которой вместе с товарищами – джуниор разработчиками я давал пару месяцев назад. Темой было начало карьеры в IT, журналист опрашивал молодых специалистов и стажеров в нескольких крупных киевских компаниях, сводя все в один обобщенный материал. Ссылка: http://dou.ua/lenta/articles/how-to-start-it-career/

Sunday, December 30, 2012

Статья на Хабре

По просьбам трудящихся написал статью на Хабр о хакатоне и проекте нашей команды. Ссылка: http://habrahabr.ru/company/epam_systems/blog/164201/

Tuesday, December 11, 2012

Доклад на JUG KPI


В прошедшую субботу мы вместе с Олегом Тымчаком выступали на встрече Java User Group KPI с докладом о своем хакатон-проекте и делились полученным опытом веселого и полезного времяпрепровождения на таком мероприятии. Слайды презентации доступны по ссылке.

Среди прозвучавших докладов отдельно следует выделить захватывающую дух облачную платформу Jelastic, которую представлял Константин Александров. 

Сама встреча проходила в очень уютной атмосфере офиса компании EPAM, с печеньками и другими ништяками.

Wednesday, December 5, 2012

Unicode transformation format

Волей случая пришлось разобраться в том, где и когда применяются кодировки UTF-8 и UTF-16, и в чем же их отличия.

Привожу тезисно свои выводы:
1) Сначала было слово, и записывалось оно в кодировке ASCII – 256 символов (1 байт), предполагалось наличие латинского и одного регионального алфавита (семейство ASCII-совместимых кодировок, например, КОИ-8). Все еще применяется в критичных к размеру сообщений сервисах и в вебе, но морально устарела, полагаю что место этой кодировки – в музее
2) Кодировка UTF-8 содержит 2^16 = 65536 символов и обратно совместима с ASCII.
Каждый символ может кодироваться в 1-4 байта. Символы русского алфавита и некоторые другие алфавиты имеют длину 2 байта
3) Кому-то и такого количества символов показалось мало, и был введен стандарт UTF-16. Иногда пишут UTF-16LE или UTF-16BE (little-endian/big-endian) для указания порядка байтов.
Количество символов: 1112064. Каждый символ кодируется в 2 или 4 байта. Совместимость с UTF-8 и ASCII: нет
4) Для передачи данных по сети гораздо выгодней использовать UTF-8 (что в большинстве случаев и делается) – короче длина сообщений. Еще аргумент в пользу UTF-8 – при потере одного байта остальной текст может быть восстановлен, а вот для UFT-16 в таком случае возможно полное искажение текста
5) Есть еще кодировка UTF-32, которая кодирует символы только в 4 байта и используется в специфичных случаях
6) В Java все символы кодируются в UTF-16, вопрос применения кодировок в той или иной версии ОС – тема для отдельной дискуссии

Источники:
1) На удивление толковая статья в английской википедии 



Sunday, November 25, 2012

Всеукраинский хакатон


Пару недель назад очень интересно провел время на хакатоне, который проводило наше предприятие среди своих украинских офисов. 24-часовой программистский марафон закончился для моей команды третьим местом в общем зачете и призом за лучший стартап.
Важную роль в таком результате сыграла эффектная презентация (в которой я принял активное участие) и возможность пользователям дать что-то пощупать. Мы залили версию приложения для Android в сеть, что позволило к концу моего выступления уже услышать первый фидбек (пусть он и звучал как “а чего так тормозит..”), который повлёк за собой бурное обсуждение в зале.
  
Немного удивил факт того, что тема (“Green planet”) была оглашена заранее. Такой поворот событий позволил более-менее продумать идею и распределить задачи. 

Общий тренд по хакатону – применение геолокационных сервисов, не удержалась от такого соблазна и наша команда.