среда, 19 февраля 2014 г.

Долгий анализ входящего смс

  В процессе улучшения работы анализа смс сообщения наткнулся на одну проблему в работе BroadcastReceiver'а: при долгом анализе сообщения в функции onReceive процесс прибивался и не получалось отфильтровать ненужное сообщение.
  На версии до 2.3.3 (API 10) на работу внутри onReceive выделялось больше времени, в версии 3.0 (API 11) время сократили, но появилась функция goAsync() возвращающая BroadcastReceiver.PendingResult, что позволяет делать тяжелую обработку в параллельном потоке и не нагружать главный. На работу в параллельном потоке дается 10 секунд, этого вполне достаточно. Следующий в очереди BroadcastReceiver не будет вызван до вызова BroadcastReceiver.PendingResult.finish(), так же есть функция BroadcastReceiver.PendingResult.abortBroadcast() чтоб прервать дальнейшую обработку события.

  Вариант с выносом обработки в Service для меня не подошел из-за невозможности вызвать другие обработчики смс. Для эмуляции прихода нового сообщения необходимо разрешение BROADCAST_SMS которое доступно только системным приложениям. Был вариант с имитацией получения смс, для этого нужно было показать уведомление и добавить во входящие (остальные изменения имитировать не получится), но по приведенной выше причине, а также из-за возможных проблем на версии 4.4, этот вариант не подошел.
  Ну и ссылка на приложение: SMS Spam Filter ))

среда, 10 июля 2013 г.

среда, 9 января 2013 г.

Некоторые особенности OpenGL

 За время использования OpenGL последних версий (3.3 и выше) накопилось не мало особенностей в его использовании, а так же отличия реализаций от nVidia и AMD, поэтому сформировал небольшой (пока) сборник.

среда, 3 октября 2012 г.

Двухсторонняя карта смещения.

Сейчас пишу игру на конкурс шутеров на gamedev.ru. В игре планирую использовать несколько интересных техник и по мере реализации буду писать о них здесь.
Первая техника - двухсторонняя карта смещения (dual-sided dismplacement map) используется для создания разрушаемых стен, полов и других аналогичных поверхностей (далее для простоты буду называть такие поверхности стенами).