Что такое barcode android

Android для чайников №18. Что такое QR код?

Павел Крижепольский

В обзорах программ на Android.MR (да и на многих других сайтах аналогичной тематики) вы могли заметить черно-белые картинки двухмерных штрихкодов, вроде той, что изображена ниже. Называется такой штрихкод QR кодом. О нем и мы и поговорим в этой статье.

Введение

Для начала давайте вспомним, что такое штрихкод, зачем он нужен и как именно появился на свет.

Авторами первого линейного штрихкода можно считать Бернарда Сильвера и Джозефа Вудланда. В 1948 Бернард стал случайным свидетелем разговора декана Института Технологии Университета Дрекселя с президентом крупной сети продуктовых компаний. Речь шла о создании системы, автоматически считывающей информацию о продукте. Эта идея показалась друзьям очень интересной и они решили заняться этим вопросом.

Вначале было перепробовано несколько других вариантов маркировки, таких как метки, нанесенные ультрафиолетовыми чернилами и другие. Но, по разным причинам, все эти идеи оказались не слишком жизнеспособны. Идея же самого штрихкода пришла в голову Джозефу Вудланду практически случайно. Сидя на пляже он написал на песке слово с помощью Азбуки Морзе, а затем просто продлил точки и тире вниз, превратив их в узкие и широкие линии.

В 1951 году Бернард Сильвер и Джозеф Вудланд показали свое изобретение компании IBM, но там сочли, что ее реализация потребует слишком сложного оборудования. На тот момент это было действительно так — лазерных сканеров еще не существовало и считывать штрихкоды было довольно сложно. Фактически, идея Джозефа и Сильвера опередила свое время более чем на десять лет.

Впервые широкой публике штрихкоды были продемонстрированы лишь в 1971 году (причем тогда они состояли не из прямых линий, а из окружностей), а первый коммерческий формат штрихкода (UPC или Universal Product Code) был разработан в 1972 году.

Не смотря на то, что с тех пор форматы линейных штрихкодов многократно менялись и совершенствовались, у них и по сей день остается один существенный недостаток — малое количество хранимой информации. Именно для преодоления этого недостатка и были разработаны двухмерные штрихкоды. В частности, QR код.

QR код был разработан компанией Denso-Wave в 1994 году в Японии. Его судьба во многом схода с судьбой линейного штрихкода – идея была интересной, но все упиралось в способы считывания. Возможно, где-то на производстве он и стал использоваться практически сразу, но вот широкую известность среди простых людей он получил намного позже.

В самой Японии QR коды стали широко распространены в начале 2000-х годов. К этому времени их можно было встретить практически где угодно: на рекламных плакатах, упаковках товаров, справочниках, визитках и во многих других местах. А вот в остальном мире бум QR кодов случился намного позже – примерно в то время, когда появились современные смартфоны на Android и iOS, позволяющие легко и просто искать, скачивать и устанавливать дополнительные программы. В том числе и сканеры штрихкодов. Согласно опросу, проведенному в России в 2012 году компанией J’son&Partners Consulting, треть респондентов знали что такое QR коды и умели ими пользоваться. Подозреваю, что сейчас таких людей уже раза в два больше.

Само название «QR Code» является официально зарегистрированной торговой маркой компании Denso Wave Incorporated. Тем не менее, его использование бесплатно как для физический, так и юридических лиц и не попадает под действия каких-либо лицензий.

Считывание QR кодов

Главное достоинство любого штрихкода – максимальная простота использования. Не стал исключением из этого правила и QR код. Все что требуется от пользователя – кликнуть по иконке программы-сканера и навести камеру смартфона на изображение кода. Все остальное смартфон сделает сам.

На некоторых смартфонах программы-сканеры установлены изначально. Владельцы остальных аппаратов смогут без всякого труда найти и скачать подобные программы в Google Play. В качестве примера приведу приложение Barcode Scanner.

Читайте также:  Как обновить дубль гис андроид

Скриншот основного окна приложения показан ниже. Как только вы наведете камеру смартфона на изображения кода, он будет автоматически считан и расшифрован. В большинстве случаев, это окажется ссылка на какой-то сайт или интернет ресурс. Например, магазин приложений Google Play. Чтобы не вводить ее вручную можно просто нажать на кнопку «Открыть браузер» в левом нижнем углу экрана программы. Таким образом, после того, как вы прочли обзор приложения на Android.MR, вы сможете установить его на свой смартфон буквально в один клик, просто считав с монитора QR код.

Создание QR кодов

Создать QR код самому ненамного сложнее. Самый простой вариант – сделать это с помощью все того же приложения Barcode Scanner. Для этого нужно нажать на кнопку «Поделиться», которая расположена в верхней части экрана. А дальше либо ввести текст, который хотите зашифровать, либо нажать на кнопку «Приложение», «Закладка», «Контакт» или «Буфер обмена», чтобы поделиться ссылкой на установленное приложение, закладкой браузера, контактом из телефонной книги или предварительно скопированным текстом.

В результате на экране вашего смартфона появится QR код, который ваш собеседник сможет считать с помощью своего смартфона. Таким образом можно быстро обменяться нужными данными, что намного проще и удобнее, чем вводить длинную ссылку или вносить данные контакта в смартфон вручную.

Источник

Как пользоваться QR кодом на Андроид и что это такое?

вкл. 22 Ноябрь 2014 . Опубликовано в Статьи

В современном мире все большую популярность получает особенный штрих-код, содержащий закодированную информацию. Такой штрих-код получил название QR-код (quick response). Этот матричный, или двумерный код был создан компанией «Denso-Wave» (Япония) в 1994 г. если поднести к такому штрих-коду специальный сканер, то можно будет получить определенную информацию, которая будет выведена на экране компьютера. Например, так кодируются адреса в интернете, название электронной почты, контактные данные и геошифровки, SMS и различные тексты, а также номера телефонов.

Устройства на основе операционной системы Android могут считывать информацию с таких кодов с помощью программ, «QR Droid» и «QR Barcode Scanner».

С помощью наглядного примера можно продемонстрировать способ чтения QR-кода на смартфоне ZTE V880H с системой Android 4.2.1 Jelly Bean с использованием программы «QR Barcode Scanner».

Для чтения QR-кода мобильным устройством нужно выполнить определенный ряд действий:

1) Вначале необходимо скачать на нашем сайте (в данном случае это «QR Barcode Scanner»), установить ее на мобильное устройство и запустить, зайдя в «Меню» и найдя там иконку с соответствующим названием: «QR Barcode Scanner».

2) Открыв пункт с названием программы, можно будет попасть в ее главное меню на английском языке.

3) После нужно нажать на самый первый пункт с названием «Scan Barcode» и навести объектив камеры на сам штрих-код.

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

Итак, операция по считыванию штрих-кодов довольно проста и необходима в настоящее время, т.к. многие производители стали использовать подобные QR-коды для выдачи дополнительной информации, которая может быть доступна только обладателям специальных устройств, в данном случае, смартфонов на платформе Android. Как пользоваться QR кодом на Андроид и что это такое?

Источник

Распознавание Barcode Android

В данной статье мы будем использовать ZXing (Zebra Crossing), чтобы расшифровать штрихкод в нашем Android приложении.

Используя ZXing, нам не нужно думать о том, что у пользователя нет сканера barcode, так как классы, предоставляемые библиотекой позаботятся об этом. Интегрируя ZXing в наше приложение мы можем предоставить пользователю более простую возможность сканировать шрихкоды, также это позволит нам сфокусироваться на разработке основной части приложения.

Создание нового проекта

Шаг 1

В Eclipse создайте новый Android проект. Введите имя приложения, проекта и название пакета.

Шаг 2

Откройте основной шаблон. Eclipse должен был создать стандартный шаблон. Внутри него замените существующий контент на кнопку

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

Добавьте к кнопке текст. Откройте файл res/values/strings

Чтобы просканировать пользователь должен будет нажать на кнопку. Когда приложение получает результат распознавания, оно отобразит его в текстовых полях.

Интегрируем ZXing

Шаг 1

ZXing — библиотека с открытым исходным кодом, предоставляющая возможность распознавания штрихкодов на Android. Некоторые пользователи уже имеют установленное приложение ZXing, поэтому достаточно передать ему код и дождаться результатов. В данном приложении мы рассмотрим способ, вызывающий соответствующую функцию другого приложения. Если данное приложение отсутствует у пользователя, то будет выведено предложение скачать его.

Читайте также:  Все для android часы

В Eclipse добавим новый пакет в Ваш проект. Для этого кликнем правой кнопкой мыши по папке src и выберем «New»->«Package», а затем введем com.google.zxing.integration.android в качестве имени пакета.

Шаг 2

Eclipse предлагает несколько способов импортирования существующего кода в проект. В данной статье самым простым методом будет создание двух классов, содержащий код из ZXing. Кликните правой кнопкой мыши по Вашему проекту, выберете «New»->«Class» и введите «IntentIntegrator» в качестве названия класса. Остальные параметры Вы можете не изменять. Как только Вы создали класс, проделайте тоже самое, но назовите класс «IntentResult».

Скопируйте код из обоих классов библиотеки, а затем вставьте его в созданные классы.

Теперь Вы можете подключить файлы в основной класс

Вернемся на минутку и также подключим следующие файлы. Обратите внимание, что Eclipse мог уже их подключить за Вас

Изучите содержание двух классов. Изучив их Вы обнаружите, что они не считывают код. Эти два класса являются просто интерфейсами, предоставляющими доступ к функционалу сканирования.

Сканируем

Шаг 1

Давайте реализуем сканирование, когда пользователь нажимает на нашу кнопку. В главном файле приложения существует метод onCreate, который должен выглядеть примерно так

Перед данной функцией создайте следующие переменные, которые будут хранить нашу кнопку и два текстовых поля, созданных в шаблоне

После существующего кода в onCreate добавьте строки, которые будут инициализировать переменные

Теперь, добавим обработчик нажатия

Расширим класс, чтобы объявить интерфейс OnClickListener

Шаг 2

Теперь, мы можем реагировать на нажатие кнопки началом процесса сканирования. Добавим метод onClick

Проверяем, была ли нажата именно кнопка сканирования

Внутри блока с условием создадим экземпляр класса IntentIntegrator, который мы импортировали

Сейчас, давайте вызовем процедуру, которая начнет сканирование

В данный момент должно начаться распознавание, но только, если у пользователя установлено необходимое приложение. Если его нет, то будет предложено начать загрузку. Результат сканирования будет возвращен приложению.

Обработка результатов сканирования

Шаг 1

Сканер будет запущен, когда нажата кнопка. Затем будет возвращен результат сканирования в метод onActivityResult. Добавим его в наш код

Внутри функции постараемся обработать результат

Шаг 2

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

Если мы не получили результат сканирования (например, пользователь отменил сканирование), то мы просто выведем сообщение

Вернемся в блок с условием, давайте разберемся с тем, что нам вернула библиотека. Объект Intent Result имеет метод, обеспечивающий получение результата сканирования. Получим результат сканирования, как строку

Также, получим вид barcode

Шаг 3

Теперь, наше приложение имеет всю необходимую для отображения информацию. В нашей статье мы просто отобразим ее пользователю.

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

Результаты сканирования

Источник

Работа с ML Kit в Android: как распознавать штрихкоды

Первую в мире покупку по штрихкоду относят к 26 июня 1974 года – это была упаковка жевательной резинки в одном из супермаркетов США. Считывая информацию со штрихкода, по различным оценкам, можно ускорить операции с товарами в среднем на 30%. Сейчас штрихкоды сканируют и продавцы, и работники склада, и покупатели – например, если они хотят сделать покупку на кассе самообслуживания.

В статье рассмотрим некоторые особенности распознавания штрихкодов с помощью библиотеки ML Kit. Материал может быть полезен как начинающим разработчикам с базовыми навыками, так и опытным специалистам, которые хотят изучить новый инструмент.

ML Kit – это бесплатный мобильный SDK от Google, который позволяет использовать машинное обучение на устройствах с операционными системами Android, iOS и Flutter. В мобильной разработке это, пожалуй, простейший способ для добавления нейронных сетей в приложение. В свою очередь, это позволяет упростить реализацию некоторых функций.

Ключевые возможности ML Kit:

• Распознавание текста (в том числе и рукописного)

Читайте также:  Пакет для обновления android

• Перевод текста между языками (офлайн)

• Распознавание лиц (и эмоций)

А также менее известные:

• Распознавание поз (определяет местоположение головы)

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

Итак, перейдем к практике работы с ML Kit. В одном из проектов у нашего партнера была потребность заменить библиотеку для сканирования штрихкодов. Ранее заказчик использовал платную библиотеку Scandit и столкнулся с некоторыми ограничениями. На тот момент, в частности, требовалось выводить логотип библиотеки на экран сканирования кодов. Также лицензионное соглашение не исключало возможности того, что производитель может отозвать лицензию. В качестве альтернативного решения команда разработки выбрала ML Kit Barcode scanning.

Пример работы barcode scanning (Android)

Прежде всего, перед началом работы с ML Kit необходимо подключить необходимые библиотеки в gradle:

А также в manifest:

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

Далее необходимо подготовить Detector. Это основной интерфейс в ML Kit, имеющий важнейшие методы process и close:

process производит всю обработку изображений и возвращает результаты, которые зависят от конкретной реализации интерфейса;

с помощью сlose мы высвобождаем занятые ресурсы.

Рассмотрим процесс подготовки BarcodeScanner – одного из наследников Detector:

BarcodeScanning – вариация порождающего паттерна. На вход единственного метода getClient принимает параметры нужного объекта, на выходе выдает экземпляр BarcodeScanner. В свою очередь BarcodeScannerOptions создается через стандартный Builder. В данном случае мы указали, что желаем распознавать только QR коды. Этот подход относится и к остальным функциям ML Kit.

После этого можно использовать данный Detector, ниже простой пример:

Возможные трудности

1) Realtime

Хотя ML Kit достаточно удобен в использовании, мы обнаружили некоторые «подводные камни». Основные вопросы оказались связаны с работой в режиме realtime. Во время реализации проекта у нас не было официальных примеров, поэтому мы изучали неофициальные примеры, и в некоторых из них были ошибки.

Так, первоначально мы рассматривали следующий пример (особенности получения данных с камеры рассмотрим ниже).

Хотя на большинстве устройств этот способ работал, на менее мощных он приводил к переполнению памяти. Так как detector обрабатывает кадры не мгновенно, был риск серьезной утечки памяти. Например, если каждое фото “весит” по 2 мегабайта, а в памяти одновременно находится несколько сотен кадров, это приведет к крашу приложения.

Изучив документацию ImageAnalysis, мы выяснили, что одна из причин вызова imageProxy.close() – необходимость сообщить системе о том, что приложение готово к обработке следующего кадра.

В результате мы изменили код следующим образом:

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

2) Адаптация

Также одной из наших задач была адаптация ML Kit к потребностям конкретного проекта. В частности, предыдущая библиотека умела обрабатывать как черно-белые, так и бело-черные штрихкоды. В свою очередь, ML Kit на старте работы негативы не понимал.

Для решения проблемы мы изменили код. Предыдущий вариант:

Новый вариант стал более сложным, с предварительной обработкой:

Здесь мы получали картинку как массив байтов и разделяли ее на позитив и негатив, которые отправляли по отдельности в detector.

3) CameraX

Ещё один баг, с которым мы столкнулись, касался неправильного использования разрешения в CameraX. Мы ставили максимальное разрешение 1920×1080.

Однако, в CameraX на выходе получались дефолтные 320×640. Мы выяснили, что порядок width и height зависит от ориентации, и для “портретного” вывода в нашем случае нужно было следующее:

Заключение

После настройки и внедрения в проект мы убедились, что ML Kit соответствует потребностям приложения и может заменить предыдущую библиотеку. В некоторых случаях платная библиотека была эффективнее, например, на небольшой доле «смазанных» штрихкодов. В свою очередь, библиотека ML Kit полностью бесплатная и не требует добавления своего логотипа на экран сканирования. В результате после тестирования владелец приложения решил полностью перейти на ML Kit.

Спасибо за внимание! Надеемся, что материал был вам полезен.

Источник

Оцените статью