В этом уроке научимся создавать приложение для чтения штрих-кодов и 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-коды, то они могут передать вам номера телефонов, которые можно сохранить, ссылки на интернет-сайты и тому подобные вещи.
Удобно это тем, что для распознавания пользователю нужна всего лишь одно приложение, которая занимает очень мало места на накопителе, а также камера на планшете или смартфоне. С помощью некоторых программ можно посмотреть отзывы о том или ином товаре, его изначальную цену и многое другое. Другие программы сами могут предоставлять своим пользователям личные QR-коды, которые можно потом использовать в качестве визитки. Многие такие приложения являются бесплатными, поэтому пользователи без труда смогут воспользоваться всеми возможностями штрих-кодов. А теперь рассмотрим бесплатные, хорошие приложения для считывания кодов на Андроид.
Лучшие приложения
Отличная программа, для считывания кодов, как обычных, линейных, так и более усовершенствованные варианты, например, Data-Matrix и QR. Стоит отметить, что данное приложение умело справляется с задачей создания qr кодов, благодаря чему можно использовать такие небольшие коды как свою собственную визитку. Понятный интерфейс, занимает меньше мегабайта на накопителе – все самое необходимое есть в этой программе. Эта программа для считывания бесплатная, поэтому скачать её сможет каждый желающий. Стоит отметить, что приложение установлено на русском языке, что тоже удобно. Текста там немного, но всё же есть.
Отличное приложение, основная цель которой заключается в том, чтобы распознавать QR-коды. Этот сканер штрих-кода помогает считывать только QR, а, например, линейные коды, которые находятся на большинство товаров сзади, эта приложение не сможет распознать. Еще одним достоинством программы является небольшой размер, занимаемый на жестком диске. Безопасность этой QuickMark QR Code Reader также на высоком уровне, поэтому пользователь может не переживать насчет того, что отсканированные данные сохраняются и передаются третьим лицам. На сайте QuickMark можно найти информацию, которая подтверждает высокий уровень безопасности. Среди доступных языков, к сожалению, только английский, однако, во всей программе текста не много, на этот счет можно не переживать.
Scan
Отличная программа для тех, кому от сканера нужна только основная функция. Он обладает простым, понятным дизайном в стиле iOS, простым управлением, а также высоким уровнем безопасности. Scan способен сканировать различные типы штрих-кодов, как новейшие QR-коды, так и обычные, линейные коды. Не так давно в Google Play появилась версия Scan для Android. Она обладает теми же функциями и свойствами, однако, немного отличается в дизайне. Кроме того, Scan очень мал в сравнении с программами-конкурентами. Удобный, простой, небольшой – вот как можно описать Scan.
Пожалуй, одно из лучших приложений для распознавания штрих-кодов, QR-кодов и не только. В дополнение к своим обычным функциям, Google Goggles обладает возможностью переводить текст, который попадает в объектив камеры на любой язык.
- Программа обладает возможностью сканирования текстов с помощью технологии оптического распознавания символов. С помощью этой технологии можно, по сути, конвертировать текст из формата PDF, djvu и тому подобных в редактируемые, скажем, TXT или DOC. Это также полезная функция, которая может пригодиться пользователю в работе.
- Последние версии приложений помогают своим пользователям распознавать картинки-миниатюры, обложки на дисках. С помощью этой функции пользователь может узнать название и полную информацию о книге, фильме или видеоигре, которая изображена на миниатюре.
- Для любителей развлечений имеется функция, которая помогает решать судоку с помощью Google Goggles!
В общем, программа обладает не только основными, но еще и дополнительными, полезными функциями, которые могут пригодиться как в работе, так и в повседневной жизни. К сожалению, Google Goggles давно не обновлялась, однако, даже с функциями, которые у нее уже есть, она имеет ряд своих фанатов. И весит программа немного – каких-то 2.7 Мб. Её можно бесплатно скачать в Google Play.
Один из самых точных и быстрых сканеров для распознавания штрих-кодов позволит пользователю моментально узнать информацию, которая была зашифрована. Он готов распознать информацию, которая хранится в QR-кодах, а также в обычных линейных кодах. Эта программа позволяет самостоятельно создавать и делиться своими QR-кодами. С их помощью можно создавать полноценные визитки, которые будет очень небольшими по размеру и хранить только самое важное.
Заключение
Если вы ищите программу, которая будет выполнять лишь свою основную функцию и занимать немного места, тогда идеальным вариантом будет QuickMark QR Code Reader. Он небольшой, однако, функциональный. А вот если вам нужна многофункциональная программа для считывания штрих-кодов и миниатюр, самым лучшим вариантом будет надежный Google Goggles. Итог: две самых лучших программы для считывания кодов – это QuickMark QR Code Reader и Google Goggles.
Для того чтобы считать QR-код, вам прежде всего понадобится мобильный телефон со встроенной фотокамерой. Однако только его недостаточно – необходимо, чтобы на устройстве был установлен QR reader – специальная программа, предназначенная для расшифровки двоичных кодов. Этих программ – огромное множество, и их выбор зависит от нескольких критериев. Прежде всего, необходимо ориентироваться на тип операционной системы, поддерживаемой Вашим устройством. На сегодняшний день декодирующие программы разработаны для большинства телефонных «операционок» – есть специальное обеспечение и для Mobile MAC OS X, и для Windows Mobile, и для Google Аndroid, а также для Symbian и BlackBerry; существуют и отдельные программы, приспособленные для компьютерных версий Apple, Linux и Windows.
Выбирая программу, способную производить считывание QR-кода, следует учитывать и модель мобильного устройства, на которое ее предстоит установить. Также имейте в виду, что «ридеры» могут различаться наличием дополнительных функций. Отдельное внимание следует обратить на то, поддерживает ли конкретная программа для расшифровки QR-кода Unicode – это бывает не всегда.
Когда программа установлена, можно осуществлять чтение QR-кода. Процесс этот не представляет сложности даже для того, кто делает это в первый раз – необходимо лишь соблюсти пошаговую инструкцию:
- Запустите программу, при помощи которой планируется распознать QR-код.
- Дождитесь активации фотокамеры вашего мобильного устройства.
- Наведите фотокамеру на QR-код. При этом соблюдайте одно из важных условий: если двоичный код небольшой, камера должна находиться на расстоянии 15 см от него.
- Отрегулируйте размер и четкость изображения на экране. Для этого используйте цифровой зум, которым оснащены все современные фотокамеры в мобильных устройствах. После регулировки изображения QR-код должен находиться по центру экрана и иметь четкие очертания.
- Ожидайте. Проанализировав QR-код, «ридер» самостоятельно выдаст вам информацию о его содержимом. Если этого не произошло, нажмите на кнопку Snapshot, чтобы произвести активацию сканера.
- Если ничего не изменилось, повторите попытку, при помощи зума поменяв расстояние до сканируемого QR-кода.
Для того чтобы успешно расшифровать QR-код, соблюдайте следующие правила:
- Следите за освещением.
- Обеспечьте максимальную неподвижность телефона во время расшифровки QR-кода – тряска способна воспрепятствовать процессу сканирования.
- Мобильное устройство должно находиться под прямым углом к одной из сторон QR-кода.
- Телефон необходимо держать на одной высоте с двоичным кодом.
Как только сканирование завершено, на экран устройства будет выведено предложение совершить какое-либо действие, зашифрованное в QR-коде – это может быть отправка sms или email, переход по ссылке, команда совершить звонок, сохранить контактные данные, опубликовать что-либо в социальной сети и т.п.
Операционная система | Модели телефонов | Программы для распознавания | |
Windows Mobile | Все современные модели HTC, Asus, Acer | ||
Mobile Mac OS X | Модели: Apple iPhone, Apple iPhone 3G | ||
Mobile Java | Все телефоны, поддерживающие Java | ||
Android | Все современные модели Android | ||
![]() |
Symbian OS V9 | Модели: Nokia 3250, Nokia 5500, Sport Nokia E50, Nokia E5, Nokia E60, Nokia E61, Nokia E61i, Nokia E62, Nokia E65, Nokia E70, Nokia N71, Nokia N73, Nokia N75, Nokia N77, Nokia N80, Nokia N91, Nokia N91 8GB, Nokia N92, Nokia N93, Nokia N93i, Samsung SGH-i570 |
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-кодов является рекламная индустрия, но постепенно эта технология внедряется в прочие сферы: в туризме, в транспорте (как электронные билеты). Эта технология также позволяет кодировать географические координаты и многое другое.
Прошло то время, когда проверить штрих коды стран производителей можно было только вручную. Сегодня любому владельцу мобильного телефона доступен сканер штрих кода, с помощью которого можно прямо на месте быстро и легко произвести его расшифровку и узнать детали о покупаемом товаре.
Вообще штрих код — это зашифрованная в виде полос информация о товаре, его стране и производителе, которая считывается специальным сканером. Расшифровать штрих код можно самостоятельно, зная, какая цифра за какой параметр отвечает.
Самые распространенные типы штрих-кодов — это тринадцатиразрядный европейский (EAN-13) и совместимый с ним 1двенадцатиразрядный UPC, который применяется в Северной Америке.
- Первые две цифры — код страны производителя;
- Следующие пять цифр — код изготовителя товара;
- Следующие пять — потребительские качества самого товара;
- Последняя цифра — контрольная, предназначена для сканера штрих кода
Иногда бывают исключения, когда коду страны соответствуют сразу три знака, а для производителя — четыре.
Самой главной является последняя, контрольная цифра. Именно по ней можно определить, настоящий товар или подделка. Рассчитывается она по следующей формуле:
- Складываем цифры, стоящие на четных местах
- Полученный результат умножаем на «3»
- Складываем цифры, стоящие на нечетных местах, кроме контрольной
- Складываем числа, полученные в пунктах 2 и 3
- Отбрасываем десятки
- Из числа «10» вычитаем полученное в пункте 5
Штрих коды стран производителей
Но прежде чем делать эти сложные расчеты, обязательно проверьте, соответствует ли штрих код страны производителя надписи на упаковке. Если код китайский, а написано «Сделано в Германии», то сами понимаете, это повод задуматься. Хотя тому могут быть и вполне объяснимые причины, например лицензия была получена в одной стране, а производство налажено в другой и т.д.
Приведу самые распространенные штрих-коды стран:
Сканер штрих кода
Как я уже говорил, тем у кого есть телефон вообще ничего этого делать не нужно. Просто установим специальную программку, которая называется (для Android) или Qrafter (для iPhone/iPad).
Эти приложения могут проверить не только штрих-коды товаров, но и также ставшие популярными в последнее время QR кодов, из которых также могут быть расшифрованы полезные данные. Кстати, потренироваться в их использовании можно прямо сейчас, попробовав отсканировать QR коды со ссылками на данные программы, приведенные чуть выше.
Работа приложений до безобразия проста — запускаем, наводим камеру на штрих код и ждем, пока она на нем сфокусируется и распознает. После чего будет предложено открыть ссылку на поиск в Гугле информации о данном товаре.
Теперь вы знаете, как узнать страну производителя и расшифровать штрих код при помощи сканера. Напоследок для Вас домашнее задание — узнайте при помощи одной из приведенных мной программ страну, фирму и товар по самому первому коду из данной статьи. Ответы пишите в комментариях, кто первый угадает, тому подарю приз! Вперед!
Проверка штрих кода онлайн
Для вашего удобства размещаю на странице форму онлайн проверки кодов. Можете узнать все о любом товаре прямо сейчас, «не отходя от кассы» — просто ввести полный номер с этикетки.
Ну и заодно вот вам генератор QR-кодов. С его помощью можно закодировать какую-либо информацию, например свой телефон или Email, а полученное изображение отправить другу или разместить на своей страничке или в блоге, чтобы эти данные не попали в спамерские базы.