В этом уроке научимся создавать приложение для чтения штрих-кодов и 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 кодов, вы можете создавать свои собственные коды;
- Возможность делиться штрих кодами со своими друзьями и подписчиками в самых популярных социальных сетях;
- Приложение (сканер) “умеет” сохранять историю все ваших распознанных штрих кодов. Благодаря этому вы можете в любое время посмотреть все ваши коды.
Приложение для сканирования штрих кодов и QR кодов на английском языке. Т.к. данное приложение на английском языке оно не подойдет для большей части русскоязычной аудитории, но если вы владеете английским языком, то приложение вам понравится . Отмечу следующие возможности:
- Приложение позволяет находить самые дешевые цены на интересующие вас продукты. Иногда бывает очень полезно;
- Поиск продуктов по ключевым словам.
И замыкает нашу сегодняшнюю подборку еще одно приложение для сканирования штрих кодов под названием “сканер QR-кодов”. Из всех возможностей отмечу следующие:
- Возможность сканировать штрих коды как с внешней камеры, так и с сохраненного на мобильный гаджет изображения;
- Отправка штрих кодов в самые популярные социальные сети с помощью СМС.
Голосование
Очень много наших клиентов, при принятии решения об автоматизации деятельности их предприятий, начинают свою работу с поиска в интернете сканера штрих-кодов. Некоторые полагают, что со сканером уже идет в комплекте программа для ведения учета.
В этом нет ничего удивительного, так как все видят на товарах напечатанные штрих-коды и считают что сканер который может распознать штрихкод - это основа всей автоматизации.
На самом деле, сканер штрих-кодов - это устройство, просто может распознать полоски штрикода, в которых закодированы цифры что находятся под штрихами и передать их в компьютер касовый апарат или другой специализированный прибор.
Для ведения операционного учета необходимо специализированное программное обеспечение: так называемые торговые программы .
- Самыми простыми программами, которые позволяют вести учет - являются электронные таблицы: программа Microsoft Excel
(Эксель) из пакета Microsoft Office, или бесплатные офисные пакеты Libre Office, OpenOffice.org
и др. Для работы с такой программой необходим сканер штрих-кодов с USB-интерфейсом, поскольку он после сканирования будет автоматически вставлять штрих-код в то место, где стоит курсор. Подробнее о типах интрефейсов сканеров штрих-кодов можно прочитать в нашей статье
"Типы интерфейсов сканеров штрихкодов."
Конечно, вести учет таким способом очень неудобно, тем не менее, вариант заслуживает внимания, так как для простых задач учета он полностью подходит.
- Очень много клиентов знают про программу 1С
. Особенностью 1С есть то, что производитель предлагает различные конфигурации программы, разработанные специально под каждую сферу бизнеса. Например, есть такие конфигурации: "Магазин автозапчастей", "Магазин бытовой техники и средств связи", "Магазин одежды и обуви", "Книжный магазин".
Про преимущества и недостатки программ 1С можете прочитать в нашей статье " Достоинства и недостатки программ компании 1С ".
Для удобной работы с продуктами 1С подходят сканеры с любыми интерфейсами, хотя много 1С-программистов заказывают сканер штрих-кодов c COM-портом и драйвер для сканера штрих-кодов к 1С .
- Также на рынке присутсвуют специализорованные торговые программы. Они более дешевые, проще в обслуживании, не требуют дополнительных и сложных настроек. Предлагаем Вам ознакомиться с одной из таких программ от
.
- профессиональная система для менеджмента складских объектов. Эта программа разработана для работы в реальном времени с большими справочниками товаров. У нее есть встроенная связь с кассовыми аппаратами и устройствами считывания штрих-кода.
Система паролей и уровня доступа, гарантирует надежную защиту базы данных без ограничения функциональности. Быстрая и легкая инсталяция, совместимость со всеми видами принтеров. Специализированный модуль "Touch screen" и "Торговый объект" удовлетворяет всем необходимым требованиям для систем этого класса.
У нас вы можете . Купить программу для минимаркета, скачать программу для маркета, купить торговое оборудование для продуктового магазина, заказать услуги по автоматизации маркета в Киеве, Вы можете связавшись с ООО "Компания Унипро" .
Также, рекомендуем посетить раздел нашего сайта: " Наши проекты " для ознакомления с объектами котрые успешно используют программу UniproRetail для учета.
Помимо приложений соцсетей и игр, на смартфоне не помешает иметь и полезные в быту программы. Сейчас 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 коды, чтобы их прочитать нужна специальная программа – сканер QR кодов. Их стали печатать на книгах, журналах, упаковках от печенья, бигбордах и вообще везде, где только есть хоть немного места.
Эти коды представляют собой картинку, на которой специальным образом расположены белые и черные квадраты. Собственно, если правильно прочитать расположение этих квадратов, можно расшифровать скрытый в этой картинке код. Для этого и существуют вышеупомянутые сканеры.
Рассмотрим, какие такие приложения для Андроид пользуются наибольшей популярностью, и какие из них наиболее функциональны.
1. QR Droid
Данная программа считается одной из лучших, если и вовсе не лучшей среди всех сканеров. Такие авторитетные издания, как PCWorld и Android Magazine поставили ей оценку 5 из 5. Среди пользователей она пользуется огромной популярностью (почти 100 млн. скачиваний на Google Play) еще и потому что она полностью бесплатная и в ней не предусмотрена реклама.
Приложение QR Droid прекрасно сканирует и расшифровывает любые QR коды.
Рис. №1. QR Droid
Другие особенности QR Droid такие:
Данный сканер работает с ISBN, EAN, UPC, матрицами данных и многими другими видами QR-кодов. В этой программе есть функция масштабирования, что очень удобно, когда коды очень маленькие и рассмотреть их достаточно непросто.
Для работы необходимо разрешить приложению работать с камерой. Скорость расшифровывания кода очень высокая, что достаточно приятно.
Не зря у приложения «Молния QR-сканер» самый высокий рейтинг (4.7) среди всех сканеров на Google Play.
Кстати, у первого и третьего сканеров в нашем рейтинге такая же оценка.
Другие особенности Молния QR-сканер:
- приложение очень нетребовательное – пользователю не нужно будет выравнивать свое устройство, чтобы код был считан правильно;
- есть история, которая понадобится если Вы захотите со временем просмотреть отсканированные коды;
- имеется фонарик;
- бесплатный доступ к коду приложения (полезно для разработчиков).
3. QR Code Reader
Данное приложение славится тем, что в нем вообще нет рекламы! На сегодняшний день таких программ очень мало.
В принципе, все сканеры QR кодов имеют интуитивно понятный даже начинающему юзеру интерфейс, но QR Code Reader в этом отношении превзошел всех.
Сразу после того, как пользователь открывает приложение, перед ним появляется поле сканнера – достаточно навести камеру телефона или планшета на QR код и дотронуться до экрана. Все предельно просто и ясно.
Здесь не нужно что-то настраивать и вообще достаточно один раз коснуться экрана.
Особенности QR Code Reader:
- есть широкие возможности для настройки;
- красивый и очень простой дизайн;
- есть фонарик, который очень сильно понадобится при сканировании ночью;
- подключение к интернету не нужно;
- имеется создатель QR кодов.
4. Сканер QR-кодов и штрих-кодов
Приложение «Сканер QR-кодов и штрих-кодов» разработано командой TeaCapps. Работает оно действительно хорошо, подключается к Wi-Fi одним нажатием. Таким же образом, быстро можно добавить контакты в адресную книгу и выполнить ряд других действий с информацией из QR-кодов.
Также Вы можете делиться абсолютно любыми данными с другими юзерами путем создания ссылки или другого кода.
Другие особенности Сканер QR-кодов и штрих-кодов такие:
- много нестандартных элементов интерфейса (расположение и внешний вид многих кнопок, возможность расширения окна сканирования и многое другое);
- возможность работать с URL, MeCard, vCard, vcf, событиями календаря, географическими расположениями, данными о звонках и Wi-Fi, а также e-mail, SMS и MATMSG;
- широкие возможности для настройки.
5. «QR сканер штрих-кода»
Это разработка команды Geeks.Lab.2015. Разработано данное приложение специально для пользователей из России, Украина и других стран бывшего СССР.
Здесь есть огромная база штрих-кодов и QR кодов для товаров из всех этих государств. Конечно же, со стандартными кодами со ссылками программа тоже справляется очень хорошо.
Вообще из всех подобных программ у разработки Geeks.Lab.2015 самый высокий рейтинг на Google Play. Обычно оценки пользователей – лучший критерий выбора.
Другие особенности данной программы такие:
Из видео ниже Вы больше узнаете о QR кодах.