Вредоносное ПО (malware) - это назойливые или опасные программы,...
В этом уроке научимся создавать приложение для чтения штрих-кодов и QR-кодов с использованием стандартной библиотеки Mobile Vision API.
Еще с выпуском Google Play services версии 7.8 разработчики добавили интерфейсы Mobile Vision, которые обеспечивают API для обнаружения штрих-кода. Они считывают и декодируют множество различных типов штрих-кодов, быстро, легко и локально.
Классы для обнаружения и анализа штрих-кодов доступны в пространстве имен com.google.android.gms.vision.barcode. Основной рабочей лошадкой является класс BarcodeDetector . Он выполняет обработку объектов Frame и возвращает массив штрих-кодов SparseArray
Тип Barcode представляет собой единый общепризнанный штрих-код и его значение. В случае 1D штрих-кодов, таких как коды UPC , это будет просто номер, который закодирован в штрих-коде. Его значение доступно в поле rawValue, в то время как тип штрих-кода (то есть его кодировку) можно найти в поле format.
Для 2D штрих-кодов, которые содержат структурированные данные, такие как QR-коды — в поле valueFormat устанавливается определенный тип значения, соответствующего полю данных. Так, например, если обнаружен тип URL , то поле valueFormat вернет константу URL, а объект Barcode.UrlBookmark будет содержать значение URL-адреса. Помимо URL-адресов, существует множество различных типов данных, которые QR-код может хранить. Например, почтовый адрес, дату и время события календаря, мероприятие в календаре, информацию контакта, номер телефона, местоположение на карте и другие данные, полный список которых приводится в документации. Ссылки на документацию .
Использование в приложении Mobile Vision API позволяет считывать штрих-коды в любом положении.
Важно отметить, что синтаксический разбор всех штрих-кодов выполняется локально, поэтому вам не нужно использовать соединение с сервером для чтения данных из кода. Например, при считывании линейного штрих-кода PDF-417 , который может вместить до 1 КБ текста, можно сразу же получить всю закодированную в нем информацию.
Итак, для разработки приложения нам понадобится:
- Среда разработки Android Studio
- Смартфон на Android 4.2.2 или более поздней версии
- Последняя версия Android SDK, включая компонент SDK tools. Вы можете получить его с помощью Android SDK Manager в Android Studio.
- Google Play Services SDK. Вы можете получить его также в Android SDK Manager в Android Studio.
Создаем новый проект в Android Studio. При создании выбираем шаблон Empty Activity.
На следующем шаге нужно убедиться, что ваше приложение может использовать службы Google Play, в состав которых входит Mobile Vision API. Для этого нужно обновить файл build.gradle вашего проекта.
В секции зависимостей должны быть такие строки. Обновите Gradle при необходимости.
Compile "com.android.support:appcompat-v7:25.0.0" compile "com.google.android.gms:play-services:9.8.0"
Службы Google Play часто обновляются, и чтобы получить последнюю версию, в Android Studio выберите инструменты > Android > SDK Manager.
Затем найдите строчку для сервисов Google Play и убедитесь, что у вас установлена версия 26 и выше. Если нет — установите компонент.
Теперь создадим пользовательский интерфейс.
В Android Studio выберите папку «res» и откройте ее вложенную папку «layout». Здесь вы увидите «activity_main.xml». Откройте его в редакторе макетов.
Вы можете видеть, что ваш макет содержит текстовое поле
По нажатию на кнопку будет происходить загрузка и обработка изображения штрих-кода, которое будет отображаться в ImageView. После завершения обработки штрих-кода информация, считанная из него, будет отображаться в TextView.
Обычно приложения для считывания штрих-кодов получают изображение с камеры устройства, или обрабатывают превью камеры. Для реализации этого потребуется достаточно много кода, и в конце урока я покажу пример реализации такого приложения. Чтобы упростить этот пример, мы обработаем готовое изображение qr-кода, которое уже присутствует в вашем приложении.
Вот пример изображения qr-кода, которое вы можете скачать отсюда.
Назовите его qr.png и добавьте в папку проекта res/drawable.Android Studio обеспечит доступ к файлу в качестве ресурса с идентификатором: R.drawable.qr
Теперь перейдем к написанию кода приложения.
В файле MainActivity.java в методе onCreate добавьте следующий код.
Button button = (Button) findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });
Это настраивает обработчик событий (onClick), срабатывающий когда пользователь нажимает кнопку. Остальной код напишем в методе onClick.
Начнем с загрузки изображения штрих-кода. Сначала находим ImageView по идентификатору. Затем используется BitMapFactory для декодирования ресурса R.drawable.qr в растровое изображение. Полученное растровое изображение передаем ImageView.
ImageView myimageView = (ImageView)findViewById(R.id.imgview); Bitmap myBitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.qr); myimageView.setImageBitmap(myBitmap);
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(getApplicationContext()) .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE) .build();
Вполне возможно, что первый раз наш детектор штрих-код сработает, когда служба Google Play еще не будет готова для обработки штрих-кодов. Поэтому мы должны проверить, что наш детектор работает, прежде чем использовать его. Если нет, нам придется ждать окончания загрузки или сообщить пользователям, что нужно найти подключение к Интернету или освободить место на устройстве. Прежде чем мы обратимся к текстовому полю, нужно объявить и найти его выше в методе onCreate.
TextView txtView = (TextView) findViewById(R.id.txtContent);
Теперь допишем метод вывода сообщения.
If (!barcodeDetector.isOperational()) { txtView.setText("Could not set up the detector!"); }
Теперь, когда наш детектор создан и мы знаем, что он работает, создаем кадр из растрового изображения и передаем его детектору. Тот возвращает нам массив штрих-кодов SparseArray.
Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
SparseArray
Обратите внимание, что Mobile Vision API способен обнаруживать несколько штрих-кодов в одном кадре. В этом случае массив SparseArray
Обычно на этом этапе нужно пробежать по массиву SparseArray и обработать каждый штрих-код отдельно. Нужно предусмотреть возможность, что штрих-кодов может быть несколько, или ни одного. В нашем случае мы знаем, что у нас есть только 1 штрих-код, и можем прописать жесткий код для него. Для этого мы берем штрих-код, называемый «thisCode», который будет первым элементом в массиве. Затем присваиваем значение его поля rawValue текстовому полю textView — и все.
Barcode thisCode = barcodes.valueAt(0); txtView.setText(thisCode.rawValue);
Теперь все, что вам нужно сделать, это запустить приложение.
Запускать лучше на реальном устройстве. На эмуляторе работать не будет, потому что на эмуляторах по умолчанию отсутствует сервис Google Play.
Вот приложение запустилось на устройстве, жмем кнопку. Если вы используете изображение штрих-кода qr.png, вы увидите в текстовом поле данные, закодированные в QR-код — это адрес нашего сайта .
Это был простой пример приложения, демонстрирующий работу Mobile Vision API. Но полноценный сканер штрих-кодов должен получать изображение с камеры устройства, или обрабатывать превью камеры.
Разработчики подготовили пример такого приложения на Github, вы можете скачать его код по ссылке .
Клонируйте или скачайте проект, и откройте в Android Studio модуль barcode-reader.
При запуске приложения из этого проекта мы можем увидеть, как оно работает. Первоначально открывается стартовый экран, на котором можно включить автофокус или вспышку. Кнопка считывания штрих-кода запускает камеру. Приложение отслеживает появление штрих-кодов на превью и рисует рамки на обнаруженных штрих-кодах. При нажатии на область обнаруженного штрих-кода превью закрывается, передавая при этом данные обнаруженного штрих-кода в текстовое поле на стартовом экране. Подробнее смотрите в .
Это приложение также использует Mobile Vision API. Но при рассмотрении проекта в Android Studio можно увидеть, что кода здесь побольше, чем в нашем простом примере.
Приложение состоит из восьми классов. Три из них отвечают за интерфейс и работу с камерой.
- Класс CameraSource предоставляет управление камерой для получения предварительного просмотра.
- Класс CameraSourcePreview отвечает за отображение превью на экране.
- Класс GraphicOverlay отображает графические объекты поверх связанного предварительного просмотра камеры.
- Класс MainActivity отображает стартовое окно с настройками и кнопкой запуска сканирования, и получает данные штрих-кода для размещения в TextView.
- Класс BarcodeTrackerFactory реализует паттерн «Фабрика» и используется для создания трекеров штрих-кода — по одному для каждого штрих-кода.
- Класс BarcodeGraphicTracker это трекер, который используется для обнаружения штрих-кодов на экране, и их отслеживания для наложения графики, а также удаления графики, когда штрих-код покидает зону видимости.
- Класс BarcodeGraphic используется для отрисовки экземпляра накладываемого на штрих-код изображения с учетом его положения, размера и идентификатора.
- Класс BarcodeCaptureActivity — это активити, которое запускается при нажатии кнопки считывания штрих-кода в стартовом окне приложения. Это активити отображает превью камеры и определяет штрих-коды на нем, выполнzет их считывание и наложение графических рамок на каждый штрих-код с помощью вышеперечисленных классов.
Я не буду в рамках этого урока углубляться в более подробное объяснение кода от разработчиков, а оставлю это вам в качестве домашнего задания. Тем более что код прекрасно документирован, каждый класс и метод содержит комментарии на английском языке. Читать и разбираться в таком коде очень полезно, особенно начинающему разработчику.
Скорее всего на вашем телефоне уже установлен по умолчанию сканер QR-кода, вы можете легко с его помощью просканировать первый QR-код. Сделать это очень легко. Просто следуйте нашей инструкции.
1. Откройте устройство чтения QR-кода на своем телефоне.
2. Держите устройство над QR-кодом так, чтобы он был хорошо виден на экране вашего смартфона.
Если вы правильно держите смартфон над QR-кодом, то в таком случае произойдет следующее:
- Телефон автоматически сканирует код.
- В некоторых приложениях для сканирования кода вы должны нажать на изображение, а не на кнопку как для создания фото на вашем смартфоне.
3. Нажмите указанную кнопку, если потребуется.
Супер! Ваш смартфон считывает код и переходить по заданной ссылке, что не всегда происходит мгновенно. На большинстве устройств это может занять несколько секунд.
Вы начнете видеть QR-коды повсюду. Они используются для обучения, информирования, объяснения и для многих других вещей. Находите их и сканируете! QR-коды сэкономят вам много времени и усилий.
Как сканировать QR-коды на Android
А теперь мы расскажем вам, как использовать приложение сканирования для QR-кодов на Android.
Кратко:
1. Откройте Play Маркет
.
2. Поиск считывателя QR-кода
.
3. Выберите QR Code Reader
(через Scan).
4. Нажмите «Установить»
.
5. Откройте программу чтения QR-кода
.
7. Направьте камеру на QR-код.
8. Нажмите «ОК»
.
Шаг 1 . Откройте Play Маркет на Android. Это значок в приложении или на главном экране.
Шаг 2. Введите считыватель QR-кода в поисковике. Появится список приложений для чтения QR-кода.
- Эта статья объясняет, как использовать QR-код Reader, но вы можете выбрать то, приложение, которое вам понравится. Просто не забудьте прочитать о приложении перед загрузкой.
- Шаги должны быть одинаковыми для всех приложений чтения QR-кода.
Шаг 3. Нажмите QR Code Reader, разработанный Scan. Имя разработчика указано ниже каждого приложения. Возможно, вам придется прокрутить страницу вниз, чтобы найти приложение, сделанное Scan.
Шаг 4. Нажмите « Установить» . Появится всплывающее окно с просьбой предоставить разрешение для доступа к информации на вашем Android.
Шаг 5. Нажмите «Принять» . QR-код Reader теперь будет установлен на вашем Android-устройстве.
- Когда приложение будет загружено, кнопка «Установить» смениться на «Открыть», и у вас появится новый значок в приложении.
Шаг 6. Откройте QR Code Reader. Это значок, который похож на QR-код в приложении. Откроется приложение, которое выглядит как стандартный экран камеры.
Шаг 7. Выровняйте QR-код в кадре камеры. Немного похоже на то, как вы делаете фотографии, за исключением того, что вам не нужно нажимать какие-либо кнопки. Когда сканер штрих кодов прочитает код, появится всплывающее окно с URL-адресом в коде.
Шаг 8. Нажмите «ОК», чтобы открыть веб-сайт. Это запускает ваш веб-браузер по умолчанию и перемещается по URL-адресу в QR-коде.
QR-код – это изображение в виде квадратиков, матричный двумерный код, который хранит запрограммированную (скрытую) информацию. Расшифровать его можно при помощи специального программного обеспечения.
QR-код (quick response) переводится с английского как «быстрый отклик». Он встречается на визитках, на различных сайтах, в рекламе. Обычно таким образом зашифровывается номер телефона, адрес сайта, координаты и прочие данные. Это модернизированная версия штрих-кода. Чтобы расшифровать QR-код, необходимо запустить программку для чтения информации, поднести код к считывающему устройству (камера обычного мобильного телефона, смартфона, планшета). Сам процесс считывания называется сканированием. Когда считывание кода завершится, на экране появится информация или же откроется новое окно (естественно, необходим доступ к интернету). Максимальный объем информации, которая может храниться в QR-коде – 2 953 байта в двоичном коде (4 296 знаков либо 7 089 цифр). Чтобы считать информацию с QR-кода при помощи мобильного телефона, необходимо установить на нем специальное приложение. Причем для каждой операционной системы подойдет отдельная программа. Например, для ОС Android можно использовать Barcode Scanner . Эта программа позволяет сканировать также и обычный штрих-код, и код Data Matrix. Также с ее помощью можно создавать собственные коды, которые будут содержать печатный текст, информацию о ссылках на программы, интернет-ресурсы, контактные данные. Тем, у кого ОС iOS, подойдет бесплатная программа QR Reader от TapMedia. Она работает очень оперативно, предлагает пользователю приложения для отображения информации после считывания кода (если это не текст и не ссылка). Также позволяет передавать QR-код через социальные сети. Если у вас ОС Windows Phone, подойдет программа QR Code Reader . Скачать программы для сканирования QR-кода можно в сети интернет, например, в Google Play или в App Store . Удобной и практичной является программа QR.biz . Она позволяет сканировать код при плохом освещении, при условии размещения на неровной поверхности, под различными углами наклона. Если в камеру попадут несколько кодов, их можно сканировать одновременно, что значительно ускоряет весь процесс считывания информации. После установки программы на мобильном приложении ее нужно запустить. При необходимости можно воспользоваться подсказками сервиса, которые облегчат работу с программой. Направьте экран устройства на анализируемый код, вам будет видна красная полоска, движущаяся по экрану, похожая на инфракрасный луч. Этого будет достаточно, чтобы программа считала информацию. Затем данные будут обработаны, и вы получите результат. В сети можно найти и другие приложения, например, для работы на стационарном компьютере. Однако они позволяют сканировать единичные коды. Если вы планируете распознавать много QR-кодов, лучше приобрести ручной сканер штрих-кодов – он обладает лучшим быстродействием. К компьютеру такое устройство подключается через USB-порт.Впервые QR-код появился в Японии. Его разработала компания «Denso-Wave» в 1994 г. для применения в автомобильной промышленности. Сегодня основной отраслью использования QR-кодов является рекламная индустрия, но постепенно эта технология внедряется в прочие сферы: в туризме, в транспорте (как электронные билеты). Эта технология также позволяет кодировать географические координаты и многое другое.
Помимо приложений соцсетей и игр, на смартфоне не помешает иметь и полезные в быту программы. Сейчас QR-коды встречаются практически повсеместно: на улицах города, упаковках продуктов и визитных карточках. Понятное дело, чтобы прочитать их, понадобится специальный софт. О пяти лучших решениях для этой задачи пойдет речь далее.
1. QR Droid
QR Droid отличается прежде всего приятным и, что немаловажно, понятным интерфейсом. Приложение давно известно среди пользователей Android-устройств. После запуска вы можете сразу же отсканировать необходимый код. Если в нем была ссылка на веб-страницу, то автоматически произойдет переход во встроенный браузер. Впрочем, это можно отключить в настройках, либо же установить в качестве браузера по умолчанию свой вариант. Интересно также, что прямо из программы вы можете создать собственный QR-код с необходимой информацией.
2. QR Code Reader
Если вы не хотите усложнять себе жизнь и ищите простой сканер, то QR Code Reader станет отличным решением. Здесь лишь камера (можно выбрать и готовое изображение из галереи), история отсканированных QR-кодов и кнопка вспышки, ничего больше.
3. BIDI
Приложение BIDI во многом схожо c QR Droid. Тут у нас есть большие возможности не только по обычному распознаванию QR-кодов, но созданию собственных. Например, визитных карточек. Очень удобно. Есть специальные разделители для номера телефона, адреса, email и т. п. В любое поле можно после внести нужные правки.
4. Neo Reader
Neo Reader, пожалуй, одно из самых мощных решений, поскольку позволяет считывать информацию не только с QR-кодов, но и со штрих-кодов. Прямо как в магазине: если приложению не удастся распознать код, то вы можете вручную ввести цифры, расположенные под ним. Еще есть возможность включить или выключить звук, а также привязку к местоположению. Единственное, что странно, создание собственных QR-кодов непосредственно в программе не предусмотрено. В качестве альтернативы предлагается быстрая ссылка на соответствующий сайт.
5. QR Reader
Первое, что привлекает внимание после запуска, так это движущаяся красная линия. Не уверены, что она выполняют какую-то роль (скорее это просто декоративный элемент), но выглядит интересно. Ещё один момент: приложение, судя по расположению системных кнопок, работает в горизонтальном режиме, имейте это в виду (хотя в режиме чтения весь контент расположен вертикально). В меню есть история сканирований и закладки. Можно создавать свои QR-коды.
А каким приложением для чтения QR-кодов пользуетесь вы?
По материалам AndroidPit
Двухмерные QR коды (англ. quick response - быстрый отклик) были разработаны в Японии компанией «Denso-Wave» в 1994 году для нужд автомобильной промышленности. Со временем QR-коды получили широкое распространение в самых различных областях благодаря эффективному способу хранения закодированной информации. В качестве самой информации может выступать что угодно: ссылки на сайты, телефонные номера, адреса электронной почты, тексты в несколько тысяч знаков.
Для того, чтобы расшифровать информацию, заложенную в QR-код необходимо его отсканировать и прочитать. С данной задачей успешно справляется большинство современных смартфонов.
Как сканировать QR код
Для сканирования QR кода используются встроенные камеры мобильных устройств. Специальное приложение распознает QR-коды, получает их детальное отображение и расшифровывает заложенную в них информацию.
Рассмотрим решение задачи по сканированию QR-кодов на примере приложений для наиболее популярных платформ смартфонов: iOS для iPhone и Android для мобильных устройств различных производителей.
Приложение для сканирования QR кодов на iPhone
Чтобы наделить iPhone возможностями для работы с QR кодами и производить их сканирование выполните следующие шаги.
Пример сканирования QR кодов на Android
На платформе Android работа с QR кодами ничем принципиально не отличает, от аналогичных действий на iOS.
Разумеется, что рассмотренное нами приложение далеко не единственная программа для сканирования QR кодов на мобильных устройствах. Вы можете сами попробовать другие приложениях и найти среди них наиболее удобный вариант.
Также существуют программы для чтения QR кодов и для персональных компьютеров. Они также могут успешно использоваться для сканирования единичных кодов. Если же вам необходимо работать с большим количеством кодов, то здесь имеет смысл уже задуматься о приобретении специального ручного сканера штрих-кодов, который подключается к компьютеру через USB-порт и обладает значительно лучшим быстродействием.