Ты космос

В сегодняшнем обновлении мессенджера-Вселенной «Ты космос» процедурно-генерируемая в реальном времени, анимированная галактика на шейдерах без текстур (алгоритм сворован), новая иконка (сворована) и новые планеты (сворованы).

Вы спросите: а как же закон о мессенджерах, защита персональных данных и всё такое?

Читать далее Ты космос

Dual Video Camera

Сегодня моё приложение, позволяющее снимать видео двумя камерами одновременно, появилось в Google Play и Samsung Galaxy Apps для новых смартфонов Samsung с безграничным экраном: Samsung S8, S8+, S8 Active, а также для Note 8.

Вот пример этого видео 10 секунд, которое я записал прямо на даче для демо:

 

 

В сравнении с ранней версией приложения, появились новые эффекты, добавлено использование сенсора гравитации, плюс управление видеозаписью с помощью наручных смартчасов Gear S. Можно установить камеру в удобном месте и снять интервью со звездой, не прикасаясь к смартфону: параметры съёмки регулируются прямо с часов.

Далее о стиле и дизайне приложения.

Читать далее Dual Video Camera

Flutter

Сегодня расскажу об одном из многочисленных способов создавать кроссплатформенные приложения для Android и iOS — Flutter от Google.

Особенности:

1. Язык программирования — Dart. Не привычный ни для Android- ни для iOS-разработчиков.

2. Среда разработки — Atom. Хотя среда разработки — это слишком громко сказано. Текстовый редактор с плагином Flutter для подсветки синтаксиса, автодополнением, кнопками для запуска и отладки и логом.

3. UI нужно объявлять в коде. А поскольку синтаксис Dart требует множество знаков препинания, то это выглядит как вермишель. Ни Interface Builder, ни предпросмотра…

4. Flutter берет на себя обновление вьюшек. Все состояние описывается в том же классе, где и UI, с помощью переменных членов-класса. Когда состояние меняется, то Flutter автоматически перерисовывает все дерево UI. При этом можно добавить анимации.

5. Превью мне показалось достаточно стабильным. Запуск приложений на симуляторе iPhone 6S и Nexus 5X происходит без заминок. Но список проблем на гитхабе зашкаливает.

6. Есть интеграция с Firebase. Это облачный сервис от Google для мобильных приложений: аналитика, сбор статистики о падениях, пуш-уведомления, место для хранения данных…

7. Есть пошаговая инструкция, как написать свой мессенджер за полтора часа. Но пока вы настроите свой макбук и установите все зависимости (хочет самый последний XCode и Android Studio) пройдет полдня.

8. Material Design из коробки.

Резюме: ни для чего серьезного Flutter не годится. Но для технического превью очень неплохо. Остается только понять, зачем Google инвестирует деньги и время в такие поделки.

Я простудился. Поэтому сижу дома и пишу мессенджер на Flutter. Название Flutter ассоциируется у меня теперь с гриппом. Здоровым бы я не стал этим заниматься… Кстати, еще раз GTA V прошел на 100%! 😉

Advent of code, Day 9

Задача: http://adventofcode.com/day/9

Ну, думаю, если не для этой задачки был придуман Prolog, то для чего же ещё? К счастью, сейчас не нужно ставить на компьютер интерпретаторы и компиляторы, можно писать код прямо в браузере.

Моё решение ниже, наверное, насмешит опытных прологеров, но я уже 10 лет не брал его в руки, поэтому как получилось, так и получилось.

Читать далее Advent of code, Day 9

О фрагментации Android настроек

Одно из неприятных проявлений фрагментации платформы Android — это разные наборы настроек на разных устройствах.

Пользователь Inbox Indicator сообщил: в LG G2 отсутствует пункт «Notification access» в настройках безопасности. Кроме того, в API отсутствует способ перехода в экран «Notification access» напрямую. Ситуация незавидная: я не могу объяснить пользователям, какую настройку надо включить из-за того, что производители реализуют настройки каждый на свой лад, а API не предоставляет мне возможности направить пользователя в эти настройки автоматически.

Это явная ошибка разработчиков Android SDK. К счастью, есть следующий способ направить пользователя к настройкам «Notification access»:
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));

AdMob

AdMob, подразделение компании Google, в частности предоставляет разработчикам приложений для платформы Android возможность интегрировать в свои приложения рекламные баннеры. Часть прибыли от рекламы AdMob отдаёт разработчику, что позволяет разработчикам монетизировать свои разработки не за счёт прямых продаж программного продукта пользователям, а за счёт спонсоров-рекламодателей. AdMob платит как за показы рекламы, так и за клики.

К сожалению, бизнес-модель AdMob несовершенна. Большинство пользователей игнорирует рекламу. Очень многих она раздражает. Речь не об этом. Главная проблема: AdMob полностью дискредитирован злоумышленниками.

В своих же собственных приложениях я вижу такой баннер:

«Ваша версия Skype устарела, обновить прямо сейчас». К слову, я работал в Skype какое-то время, поэтому я специально выбрал именно этот пример.

Этот баннер ведёт на скачивание приложения skype93.apk. По классификации антивирусных компаний, в одной из которых («Лаборатория Касперского») мне также довелось поработать, данное приложение является SMS-трояном. Оно отправляет SMS-сообщения на короткие номера, зарегистрированные на злоумышленников. Пользователь может косвенно понять, что приложение вредоносное, проанализировав список запрашиваемых разрешений при его установке.

В этом списке есть пункт «Платные услуги отправлять SMS сообщения». Наличие этого пункта говорит о том, что данное приложение имеет код, который будет отправлять SMS сообщения с телефонного номера пользователя. Доказательства этому обнаруживаются и в самом коде путём декомпиляции этого приложения. Важно: политика Google, как и политика большинства корпораций, заключается в отказе от ответственности. Если Вы нажмете кнопку Установить, то Вы соглашаетесь с разрешениями и полностью берете ответственность на себя.

Всегда внимательно читайте разрешения приложения, если не хотите остаться без денег.

Я установил приложение, поскольку у меня не было SIM-карты в телефоне и я ничем не рисковал. К сожалению, приложение совершенно не было похоже на Skype.

Автор трояна сердечно благодарит пользователя и предлагает перейти по указанной ссылке. Открывается окно со списком приложений, одна из этих ссылок действительно ведёт на мобильный сайт Skype, где пользователь может скачать приложение, если конечно, у него остались деньги на счету.

Большинство людей, не сведущих в тонкостях операционной системы Android, основ безопасности в интернете, не понимают, что произошло. Люди не склонны винить себя в безграмотности или лоховстве. Многие склонны обвинять разработчика приложения, из которого они перешли по этой злополучной рекламе. Пострадавшие не могут понять, что разработчик приложения не оказывает никакого влияния на отображаемый контент этой баннерной сети. Аналогия: разработчик — это рабочий, который установил биллборд на шоссе; правообладатель биллборда — это AdMob (Google); а рекламодатель — это клиент Google.

Я, как мобильный разработчик, со своей стороны приложу все усилия, чтобы полностью исключить рекламу AdMob (Google) и других аналогичных сервисов из своих приложений, издаваемых под псевдонимом CornPlay. В то время пока идёт удаление рекламы из приложений, я призываю пользователей не переходить ни по каким баннерам рекламы в приложениях. Также я рекомендую установить на ваши Android смартфоны и планшеты антивирус Kaspersky Mobile Security. Всегда проверяйте приложения перед установкой антивирусом. Отключите установку приложений из неизвестных источников в настройках смартфона.

Со своей стороны я лично не потеряю много прибыли на этой рекламе, но моя профессиональная репутация не будет омрачена связью со зловредными приложениями. Я очень надеюсь, что сознательные разработчики последуют моему примеру, и Google сможет предпринять соответствующие меры для решения этой проблемы и восстановить доверие пользователей и разработчиков к платформе.

Считыватель билетов на метро

Эту идею мне подкинул Рома Савельев, который работает в Nokia. В Nokia, кстати, NFC — это buzz word, как я понял. Достаточно посмотреть на спеки Nokia N9 и увидеть сколько раз там встречаются эти три буквы подряд.

Благодаря NFC в Android SDK 2.3.3 можно считывать данные с бесконтактных билетов московского метрополитена. Технологически билет метро — это Mifare Ultralight. В Android SDK есть класс по чтению и записи данных на карты по этой технологии. Читателям экспериментировать с перезаписыванием данных на карту не рекомендую: испортите билет. С каждым проходом через турникет на карте перманентно выжигаются один или несколько бит, которые вы никак потом не обнулите.

А вот видео, в конце которого есть QR-код со ссылкой на приложение в Android Market:

Если в Москве окажется много пользователей Nexus S и московского метрополитена, то программу буду развивать. Заодно хочется узнать, какие другие телефоны поддерживают стандарт Ultralight.

Ещё 10 минут сна

«Верите ли вы в фей? Скорей скажите, что верите. Если верите, хлопните в ладоши!»

Джеймс Мэттью Барри, автор сказки «Питер Пэн»

Возвожу лень во вторую степень. На днях сделал для себя будильник на свой Android, который даёт мне подремать еще 10 минут, стоит мне лишь хлопнуть в ладоши. За основу взял исходники стандартного будильника. Уточню, взял непосредственно версию для Android 1.6 Donut, потому что у меня именно такой аппарат.

Принцип работы в следующем. Начинаю проигрывать мелодию будильника и одновременно с этим стартую аудиозапись с микрофона. Если мы получаем с микрофона достаточно большую амплитуду, которую мы считаем хлопком, то будильник переводится в режим snooze. Но было две проблемы, которые мешали работать такому алгоритму работать правильно.

Если была включена вибрация, то дребезжание корпуса аппарата о поверхность могли быть достаточно громкими, чтобы случилось ложное срабатывание. Проблема решается просто: вибрация моему будильнику совершенно не нужна.

Вторая причина ложных срабатываний — это эхо. Звук, который проигрывает мобильник, подмешивается к звуку окружающей среды и в таком виде поступает на вход микрофона. Перспектива собственноручно компенсировать эхо меня совершенно не привлекала, хотя такая возможность тоже есть в Android SDK. Я подобрал пару параметров для AudioManager, которые позволили мне снизить влияние эха.

Все параметры подобраны эмпирическим путем. Корректная работа на других аппаратах не гарантируется, потому что чувствительность микрофона может быть различной. Поэтому такую программу вы вряд ли когда либо увидите в Android Market.

Скачать мой будильник | Скачать исходники

Первый конкурент FontCollection

Шарль де Голль сказал: «Всегда выбирайте самый трудный путь — там вы не встретите конкурентов».

Прошло три месяца с момента выхода FontCollection, и теперь у моей программы появился конкурент от компании S4BB. Это незамедлительно сказалось на продажах — впервые на BlackBerry App World доходы от FontCollection снизились до $30 в день. До этого никогда не было меньше $50 в день.

Пока конкурент технически слабоват, и S4BB наступают на те же грабли, что и я. Но мне приятно, что моя идея оказалась настолько привлекательной, что другие разработчики пытаются скопировать её. Считаю, что мне очень повезло, что мне первому пришла в голову эта идея, и я первым её реализовал.

Как пойдут дела дальше — не знаю. У меня апдейты FontCollection поставлены на поток и не требуют усилий. Раз в месяц я добавляю новые шрифты. Сейчас в коллекции около 100 шрифтов. Естественно, все шрифты разрешены к использованию в коммерческих целях, потому что если разработчики шрифтов начнут предъявлять мне претензии о нелицензионном использование продуктов, на которые у них есть авторские права, я просто окажусь в глубоком минусе. Чтобы понять, сколько стоят лицензии на шрифтов, можно посмотреть сюда.