Pull to refresh
4
0
Роман @ArtRoman

User

Send message

Отслеживание уведомлений на Android 4.0-4.2

Reading time14 min
Views11K
Начиная с версии 4.3 в Android OS была добавлена возможность отслеживать все уведомления в системе используя NotificationListenerService. К сожалению, обратная совместимость с предыдущими версиями OS отсутствует. Что делать, если подобный функционал необходим на устройствах с более старой версией операционной системы?

В статье можно найти набор костылей и хаков для отслеживания уведомлений на Android OS версии 4.0-4.2. Не на всех устройствах результат 100% работоспособен, поэтому приходится использовать дополнительные костыли, чтобы предположить удаление уведомлений в определенных случаях.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments1

Рецепты под Андроид: Selectable соус для LayoutManager'a

Reading time12 min
Views8.6K
Пользователь не любит тратить время, пользователь не любит переписывать текст. Пользователь хочет копипастить. И хочет делать это даже в приложении на мобильном устройстве. И хочет, чтобы эта функция была удобной для работы пальцем на небольшом экране. Производители операционных систем по-разному реализуют эту функцию, стараясь угодить пользователям. Не отстают и разработчики приложений.



Нас тоже не обошла стороной эта тема, и в одном из приложений нам пришлось потрудиться, чтобы сделать как можно более удобную функцию выделения и копирования текста. Секретом этого рецепта мы и хотим поделиться с общественностью.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments1

Какие впечатления может дать вам картонка от Google

Reading time3 min
Views18K
Многие наверняка знают о проекте Google Cardboard. Это, пожалуй, самое дешевое решение для виртуальной реальности из ныне существующих. Как и все гениальное — это простейшее устройство. Оно представляет собой картонную коробочку для смартфона с двумя линзами, что позволяет вам смотреть на дисплей вашего телефона, как на два огромных экрана, показывающих картинку, сводимую мозгом в одну целую. Смартфон отлично справляется с задачей обработки вращений головы, и поэтому создается эффект виртуальной реальности.

В этом году Google на своей ежегодной конференции разработчиков уделял много внимания погружению в виртуальный мир на 360 градусов:
— был представлен Jump — массив из 16 GoPro для съемки сферического стерео видео
— объявлена поддержка школ в осуществлении виртуальных экскурсий при помощи CardBoard
— сам зал конференции имел экран, показывающий видео со всех сторон помещения, что не двусмысленно намекало о важности VR-направления для Google
— ну и, конечно, на конференции обновили представленный в том году CardBoard.



На прошлой неделе ко мне в руки прямиком из Сан-Франциско попала как раз такая картонка.
Спешу поделиться впечатлениями.
Total votes 31: ↑21 and ↓10+11
Comments14

Почему от 3D болит голова / Часть 6: Искажения цвета

Reading time17 min
Views16K

S3D: No pain IS gain




Ранее мы говорили про проблемы 3D оборудования, проблемы контента, перепутанные ракурсы, слишком большой и слишком маленький параллакс и геометрические искажения. Сегодня речь пойдет про технические проблемы с цветом. Почему картинки в левом и правом ракурсах различаются? Какие у этого технические или, точнее, физические причины? Как выглядели искажения по цвету в 50-х? Как выглядят сейчас? Каковы тенденции? Как это можно исправить? И, конечно, к чему это приводит. Будут показаны разные по цвету кадры из фильмов, в том числе достаточно эпичные примеры.
Осторожно, траффик - много примеров из фильмов...
Total votes 41: ↑40 and ↓1+39
Comments22

Получение пути к карте памяти SD Card на Android

Reading time5 min
Views269K
Разрабатывая приложение для проведения соревнований, я столкнулся с проблемой хранения базы данных. Проблема состояла в том, как мне определить внешнюю карту памяти. В целом поиск в сети точного ответа не дал. Поэтому, объединив все найденные результаты, я собрал свой класс. Если кому интересно, смотрим под катом.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments16

Android Volley custom Loader

Reading time8 min
Views12K
В статье изложен подход реализации Loader для загрузки разных объектов в одном Activity. В качестве сетевой библиотеки загрузки используется Volley. Метод подходит когда в одном Activity имеется несколько одновременно использующихся фрагментов

public class MainActivity extends ActionBarActivity
        implements LoaderManager.LoaderCallbacks<DataHolder>{
    ...
    @Override
    public void onLoadFinished(Loader<DataHolder> loader, DataHolder data) {
        if ( loader.getId() == DataLoader.LOADER_ICONS_ID ){
           doIcons( data.getIcons() );
        } else if( loader.getId() == DataLoader.LOADER_STYLES_ID ){
           doStyles( data.getStyles() );
        } else if( loader.getId() == DataLoader.LOADER_ICONSETS_ID ){
           doIconSets( data.getIconSets() );
        }


Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments10

Универсальный пульт на Arduino

Reading time4 min
Views135K
Есть много статей в интернете о том, как сделать свой пульт к телевизору на Arduino, но мне понадобился универсальный пульт для управления телевизором и медиа-плеером. Главное преимущество моего универсального пульта в том, что кнопки в приложении для андроид телефона двух-целевые, а впрочем, смотрите на видео.


Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments15

Эксплуатируем root-уязвимость в роутерах Asus

Reading time28 min
Views108K
В начале 2015 года компания Asus исправила критичнейшую уязвимость в своих роутерах. «Дыра» была в службе по имени infosvr, использующейся утилитами Asus для облегчения настройки роутера путём его автоматического обнаружения в локальной сети. Уязвимость позволяла выполнять любые команды с правами root (ведь infosvr тоже root), что давало злоумышленнику полный контроль над системой.

Но Asus выпустила исправленные прошивки. Теперь это всё в прошлом. Или нет? Хм… А как часто обыватели обновляют прошивки на своих роутерах?



Прошу под кат за подробностями, историей обнаружения, исследованиями, инструкциями и… эксплоитами.
Читать дальше →
Total votes 86: ↑86 and ↓0+86
Comments33

Программное создание NinePatchDrawable

Reading time9 min
Views9.2K
В новом Android Lollipop появился такой интересный компонент как VectorDrawable. Если использовать его с умом, можно значительно снизить объем приложения, сэкономив на графических ресурсах, плюс, использование векторной графики освобождает нас от муторного процесса создания изображений под разные плотности экрана. Первая мысль, которая меня посетила, когда я увидел VectorDrawable, была: “Ух ты! А его можно тянуть как NinePatch?”. Оказалось нельзя. Тут можно было бы немного огорчиться и довольствоваться тем, что хотя бы иконки можно в векторе держать. Однако, я на этом решил не останавливаться. В итоге получилась универсальная утилита, которая из любого Drawable способна сделать NinePatchDrawable.



В изображении, которое вы видите, используется вектор, но он растянут по центру. И это удивительно! Возможность растягивать вектор только в определенных областях предоставляет, по истине, колоссальные возможности. А если учесть, что есть проекты позволяющий использовать вектор на более ранних версиях андроида, векторные изображения начинают показывать себя во всем своем великолепии.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments2

DICOM Viewer изнутри. Воксельный рендер

Reading time9 min
Views93K
Добрый день, уважаемое хабра-сообщество!

Сегодня мне бы хотелось пролить свет на одну из самых неосвещённых тематик на хабре. Речь пойдёт о визуализаторе медицинских радиологических изображений или DICOM Viewer'е. Планируется написать несколько статей, в которых поговорим об основных возможностях DICOM Viewer'а — в том числе возможности воксельного рендера, 3D, 4D, рассмотрим его устройство, поддержку протокола DICOM и др. В этой статье я расскажу о воксельном рендере и его устройстве. Всем заинтересовавшимся добро пожаловать под кат.


Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments75

Архитектура Android-приложений… Правильный путь?

Reading time5 min
Views94K
От переводчика: Некоторые термины, которые использует автор, не имеют общепринятого перевода (ну, или я его не знаю:), поэтому я решил оставить большинство на языке оригинала — они всё равно понятны и для тех, кто пишет под android, но не знает английский.
Куда писать об ошибках и неточностях, вы знаете.


За последние несколько месяцев, а также после дискуссий на Tuenti с коллегами вроде @pedro_g_s и @flipper83 (кстати говоря, 2 крутых Android-разработчика), я решил, что имеет смысл написать заметку о проектировании Android-приложений.

Цель поста — немного рассказать о подходе к проектированию, который я продвигал в последние несколько месяцев, и также поделиться всем тем, что я узнал во время исследования и реализации этого подхода.
Удиви меня
Total votes 31: ↑30 and ↓1+29
Comments9

Не используйте MediaPlayer и MediaMetadataRetriever в Android

Reading time2 min
Views23K
Как показывает мой скромный опыт, родные MediaPlayer, MediaMetadataRetriever, а так же другие классы, которые так или иначе основываются на них (VideoView, ThumbnailUtils, к примеру), являются крайне ненадежными в использовании. Возможно, проблема в том, что они реализованы нативно, и меняются от версии к версии, но факт остается фактом — их поведение на разных устройствах предсказать невозможно, причем это даже не зависит от мощности железа.
Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments15

Java-конференция Joker 2014 глазами докладчика из Сибири

Reading time4 min
Views15K
Недавно в Санкт-Петербурге прошла Java — конференция Joker 2014. На мой взгляд, самая технически насыщенная и масштабная из всех подобных в России.

Доклады прошлого года мне понравились, и я решил принять участие в Java — вакханалии этого года в качестве докладчика. В статье я предлагаю свой взгляд на события, качество докладов, а также мнение тов. Джигурды о выходе Java 9.



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

Казалось бы, после принятия заявки я как обычно смогу дудеть в дуду и ничего не делать, ваять потихоньку презентацию. Но не тут-то было! Мне пришлось пройти строгое предпрослушивание и пару тренингов, перед тем как сдать окончательный вариант доклада организаторам. Имейте это ввиду, когда сами будете посылать заявки этой команде маньяков!
Читать дальше →
Total votes 43: ↑28 and ↓15+13
Comments7

Оптические иллюзии из книги Eye Benders с пояснениями

Reading time2 min
Views43K
Некоторые оптические иллюзии из книги Клива Гиффорда «Eye Benders: The Science of Seeing and Believing», которыми он поделился с читателями The Guardian.



Некоторые зрительные иллюзии связаны с тем, как работают глаза, но многие связаны с тем, как мозг обрабатывает поступающие в него сигналы.
Читать дальше →
Total votes 53: ↑45 and ↓8+37
Comments69

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Views88K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments36

AppleInternal and some other stuff или разработка в Apple изнутри

Reading time3 min
Views14K
Эту информацию я собирал примерно год, но она до сих пор актуальна (лето 2014). Я не сотрудник яблочной корпорации, но мне очень помогли некоторые люди, связанные с Apple. В статье я постараюсь рассказать о этапах разработки девайсов, внутреннем ПО и кое что еще.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments11

Секс и насилие в Google Play

Reading time1 min
Views342K
Последнее время google систематически удаляет приложения за секс и насилие, без пояснения причин и не вступая в диалог с разработчиками.

Окей, гугл. Давайте проведем небольшой социальный эксперимент.

Я установил на смартфоне доступ к контенту для младшей возрастной группы и зашел в несколько приложений от производителя Google Inc.
посмотрим, что из этого получится
Total votes 419: ↑371 and ↓48+323
Comments147

64-битная Windows — это очень просто

Reading time2 min
Views13K
Перевод поста piers7 «64 Bit Explained».

Послушайте, в этом правда нет ничего сложного.

Все программы находятся там же, в %ProgramFiles%, кроме случаев, когда вам требуется 32-битная версия, которая находится в %ProgramFiles(x86)%, за исключением ситуаций, когда дело касается 32-битной машины, и в этом случае они по-прежнему в %ProgramFiles%.

Все эти библиотеки, DLL, по-прежнему находятся в %SystemRoot%\System32, просто теперь они 64-битные. Ну а 32-битные, они вот, в %SystemRoot%\SysWOW64. Вы ещё следите за объяснением? Да, а 16-битные всё так же хранятся в %SystemRoot%\System – перемещать их в иное место было бы странным.
Читать дальше →
Total votes 227: ↑175 and ↓52+123
Comments115

ForkLift — продвинутая замена Total Commander для Mac OS

Reading time2 min
Views63K
image

Очень много ребят жалуется на отсутствие замены Total Commander под Mac OS и не знают о существовании файлового менеджера ForkLift, который вполне может заменить Total Commander.

Краткий обзор возможностей:

Поддерживаемые протоколы
image FTP, SFTP, WebDAV, S3, iDisk, SMB, AFP, NIS
Возможность монтировать удаленную файловую систему и работать с ней, как с локальной. При редактировании файлов на удаленной системе в локальном редакторе, изменения сразу применяются без необходимости отдельного подтверждения «загрузить новую версию файла?».

Также существует возможность подмонтировать любую из удаленных файловых систем как локальный диск, таким образом файлы будут доступны из системы как локальные.
Читать дальше →
Total votes 47: ↑33 and ↓14+19
Comments79

Многопоточность — как средство повышения эффективности

Reading time10 min
Views9.3K
Хорошей практикой в создании быстро реагирующего приложения является уверенность, что ваш пользовательский интерфейс требует минимального времени для обработки. Каждое потенциально долгое действие, которое может повесить Ваше приложение, нужно вывести в отдельный поток. Типичными примерами таких действий являются сетевые операции, которые несут в себе непредсказуемые задержки. Пользователи могут мириться с небольшими паузами, особенно, если вы информируете их о прогрессе, а вот застывшее на месте приложение не дает им выбора, кроме как закрыть его.

В этом уроке мы создадим загрузчик картинок, который иллюстрирует данную ситуацию. Мы будем заполнять ListView пиктограммами изображений, загруженных из сети. Созданный асинхронный процесс, загружающий изображения в фоновом режиме, будет ускорять наше приложение.
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments19

Information

Rating
4,236-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity