Как сканировать qr код на разных моделях смартфонов


Отсканировать QR-код на Андроид устройстве можно несколькими способами: скачав специальное приложение через Play Market или воспользовавшись встроенным в ОС инструментом для считывания кодов.

QR-код (англ. Quick Response Code – код быстрого реагирования; сокр. QR code) – матричный (двумерный) штрихкод, разработанный японской компанией Denso-Wave в 1994 году. Первоначально эти коды использовались в автомобильной промышленности для быстрого учета информации о производстве и реализации авто.

Сейчас же изображения с черными квадратиками можно найти на:

  • чеках кассовых аппаратов;
  • авиа- и ж/д билетах;
  • табличках в музеях, памятниках архитектуры, монументах;
  • в метро;
  • меню кафе и ресторанов;
  • на товарных упаковках;
  • квитанциях коммунальных платежей.

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

В настоящее время QR-коды широко распространены в странах Азии, Европе и Северной Америке. В России они появились сравнительно недавно, но активно используются в сферах товаров и услуг.

Способы отсканировать код

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

Программы

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

  • «Сканер QR и штрих-кодов» от Gamma Play.
  • «QRcode» от YUNteam.
  • «Сканер QR-кодов» от InShot Inc.

Работать с мобильными сканерами очень просто:

  1. Скачиваем приложение на смартфон.
  2. Открываем программу.
  3. Направляем камеру на QR-код.

  4. Получаем информацию о товаре или копируем веб-ссылку для перехода на сайт.

Большинство приложений позволяют настраивать процесс сканирования, а также позволяют просмотреть историю ранее отсканированных кодов.

Что потребуется для сканирования QR-кода на ОС Android

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

  • железнодорожные и авиабилеты;
  • кассовые чеки;
  • таблички достопримечательностей;
  • ресторанные меню;
  • товарные упаковки;
  • коммунальные квитанции.

Чтобы добыть требуемую информацию, вам потребуется современный смартфон, оборудованный камерой и простеньким софтом. Даже при использовании фронтальной камеры на своем устройстве вы достигнете желаемого. Неоценимую помощь окажут приложения, выпущенные компаниями Gamma Play, InShot Inc и YUNteam.

Встроенные приложения на Андроид

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

Xiaomi

На смартфонах Xiaomi есть приложение “Сканер”, которое по умолчанию располагается в папке “Инструменты” или в дополнительном меню слева от основного экрана.

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

Особенностью сканера от Xiaomi является возможность сканирования любой фотографии из Галереи на наличие QR-кода.

Huawei

У смартфонов Huawei есть очень удобная функция вывода на заблокированный экран нескольких инструментов для быстрого открытия. Сканер QR-кода – в их числе.

Для того, чтобы открыть сканер с заблокированного устройства, нужно:

  1. Свайпнуть снизу вверх от нижнего края заблокированного экрана, в результате чего внизу появляется меню инструментов.

  2. Выбрать в списке значок сканера.

Далее наводим камеру на QR-код, ждём, пока инструмент расшифрует изображение и смотрим результат. Однако для получения полной информации нужно разблокировать смартфон.

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

В оболочке EMUI также присутствует возможность сканирования фото с QR-кодом. Чтобы ею воспользоваться, нужно зайти в Галерею, выбрать фото, на котором есть штрих-код, нажать на кнопку «Ещё» и в высветившемся меню выбрать «Отсканировать QR-код».

Samsung

На устройствах компании Samsung сканер – встроенная в стандартную камеру функция, и для того, чтобы код считался, нужно лишь навести на него объектив. Но если автоматическое распознавание не сработало, нужно активировать специальный режим. Для этого:

  1. Переходим в приложение «Камера».

  2. Заходим в дополнительные настройки.
  3. Выбираем режим сканера.

Таким образом можно получить информацию с QR-кода на всех современных моделях Samsung.

Генерируем и сканируем QR/BAR коды


В статье приводится короткий пример, как встроить в своё приложение генератор и/или сканер QR кодов (или штрих-кодов), и тем самым облегчить себе задачу передачи с устройства на устройство коротких объемов информации. QR-коды пришли на смену устаревшим штрих-кодам (далее вместо ‘Bar code’) и все плотнее входят в нашу жизнь, их используют в десятках различных решений от передачи ссылок на сайт, до сложных систем авторизаций и покупок. Подробно узнать что такое QR-код можно в подробностях узнать из статьи Читаем QR код

Для выполнения поставленой задачи нам понадобится 2 библиотеки из двух проектов:

  • ZBar bar code reader
  • ZXing («Zebra Crossing»)
Сканируем QR-коды

Для сканирования будут использоваться библиотеки из ZBar bar code reader
, итак поехали:

  1. Добавить в проект zbar.jar
  2. Добавить в проект native библиоткеки libiconv.so и libzbarjni.so отвечающие за анализ и распознавание картинки с камеры в реальном времени.
  3. Загружаем native библиотеки в память static { System.loadLibrary(«iconv»); }
  4. Инициализируем сканер scanner = new ImageScanner(); scanner.setConfig(0, Config.X_DENSITY, 3); //почему именно эти параметры нигде не указано scanner.setConfig(0, Config.Y_DENSITY, 3);
  5. Дальше передаем сканеру каждый новый кадр из превью камеры PreviewCallback previewCb = new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera camera) { String lastScannedCode; codeImage.setData(data); int result = scanner.scanImage(codeImage); if (result != 0) { SymbolSet syms = scanner.getResults(); for (Symbol sym : syms) { lastScannedCode = sym.getData(); } } } }
  6. В результате в lastScannedCode
    мы получаем распознанный код.

    Тут есть одна особенность, result = scanner.scanImage(codeImage)
    иногда возвращет корректный результат, даже когда нет никакого QR-кода перед камерой. То есть, камера иногда распознает что то даже в обычной размытой картинке. Поэтому рекомендую ввести дополнительную проверку на размер прочитанного кода или на соответствие ожидаемому формату.

Генерируем QR-коды

В этом случае уже будут задействованы ресурсы библиотеки ZXing
. Входные парамеры
encodeAsBitmap
: текст или код для кодирования, стандарт в который мы кодируем, размеры картинки на выходе. Bitmap barcode_bitmap = encodeAsBitmap(text, BarcodeFormat.QR_CODE, 200, 200); targetImageView.setImageBitmap(barcode_bitmap); private static Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException { String contentsToEncode = contents; if (contentsToEncode == NULL) { return NULL; } Map hints = NULL; String encoding = guessAppropriateEncoding(contentsToEncode); if (encoding != NULL) { hints = new EnumMap(EncodeHintType.class); hints.put(EncodeHintType.CHARACTER_SET, encoding); } MultiFormatWriter writer = new MultiFormatWriter(); BitMatrix result; try { result = writer.encode(contentsToEncode, format, img_width, img_height, hints); } catch (IllegalArgumentException iae) { // Unsupported format return NULL; } int width = result.getWidth(); int height = result.getHeight(); int[] pixels = new int; for (int y = 0; y < height; y++) { int offset = y * width; for (int x = 0; x < width; x++) { pixels = result.get(x, y) ? BLACK : WHITE; } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; }

Что на счёт Штрих-кодов?

Сканер понимает все виды штрих-кодов без каких-либо модификаций, из коробки
.

Генератор же модифицируется не просто, а очень просто: в функцию encodeAsBitmap

передаем в поле
format
вместо BarcodeFormat.QR_CODE, что нибудь вроде BarcodeFormat.CODE_128, что будет соответствовать штрих-коду стандарта Code 128

Пару советов напоследок

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

Замечено, что метод public void onPreviewFrame(byte[] data, Camera camera) { codeImage.setData(data); …. } постоянно теряет память (есть Memory Leak) ввиду того что буфер кадра постоянно создается и очищается на каждом новом превью кадре с камеры. Для того, что бы этого избежать, есть возможность использовать CallbackBuffer для выделения статичного буфера под превью кадры. Это действительно помогает избавится от утечек памяти и даже увеличивает фрейм-рейт у превью картинки с камеры. Но!
, нашлась модель телефона, которая ни в какую не захотела работать с превью буфером и не факт что не найдутся еще, поэтому оставил в примере более надежный способ.

Генерация штрихкодов имеет ограничения согласно выбранному стандарту: максимальный размер в байтах, разрешенные смиволы и т.д. Изучите особенности линейных штрикодов, для того что бы обеспечить совместимость отображаемых вами штрих-кодов с магазинными сканерами

Тем, кто собирается использовать .so библиотеки в проектах использующих билд систему Gradle, шаги следющие: создаем jar файл iconv.jar со следующей структурой:

  • lib/
  • lib/x86
  • lib/armeabi
  • lib/armeabi-v7a

и добавляем в его секцию dependencies
compile files(‘libs/iconv.jar’) Либо, более универсальный вариант, что бы не описывать все JAR файлы по-отдельности: dependencies { compile fileTree(dir: ‘lib’, include: ‘*.jar’) }

UPD. Залил исходники на GitHub Что получилось на выходе проекта (Генератор и Сканер в одном флаконе):

Создаем свой QR-код

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

  1. https://qrcoder.ru.
  2. https://ru.qr-code-generator.com.
  3. https://goqr.me.
  4. Приложение «AndQR — Создание QR-коды».
  5. Приложение «QR-генератор кода».

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

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

Что делать, если не сканирует на Андроид?

В случае, если все выполнено, а сканер не работает, попробуйте сделать следующее:

  • Проверьте на другом объекте, возможно штрих поврежден.
  • Если предыдущий пункт также не работает, поменяйте приложение или обновите его (если есть пакет обновлений).
  • Все вышеуказанные меры предприняты и не работает? Проверьте камеру на наличие повреждений, пыли и т.д.
  • Обновите Android.

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

Что делать, если код не сканируется

В случае, если смартфон не распознаёт QR-код и не хочет отображать зашифрованную в нём информацию, нужно:

  1. Попробовать отсканировать код под другим освещением, настроив фокусировку.
  2. Перезапустить приложение для считывания или полностью его переустановить.
  3. Перезагрузить смартфон.

Также стоит отметить, что программы не считывают повреждённые и плохо напечатанные QR-коды.

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

Полезно 9

↑ Какие приложения считывают rq-код?

Способ сканирования зависит во многом от модели смартфона. Так, например, на Samsung не нужно скачивать приложение, так как сканер уже встроен в прошивку. Если у вас флагман этого года, то поищите сканер в своем телефоне. Если не нашли, перейдите в play маркет — вас ждет более 50 программ, которые считывают штрих-коды. Принцип работы у всех практически одинаков.
К самым популярным стоит отнести:

  1. Молния qr-сканер
    — плюсы: быстрая скорость, русский интерфейс, простое управление, отсутствие рекламы;

    с Play Market

  2. QR сканер штрих-кода
    – позволяет не только читать коды, но и самостоятельно создавать их;

    с Play Market

  3. QR Code & сканер
    — помимо считывающей способности, может «прятать» текущую гео локацию, контактные данные и не только.

    с Play Market

Как работают приложения-сканеры QR и штрих-кодов

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

Штрих-код

Штрих-код — это чередование черных и белых полос разной толщины. Иногда используют черно-белую последовательность других фигур. В привычном нам линейном штрих-коде комбинация из 4-х полос различной толщины кодируется в цифры от 0 до 9. Существует множество разновидностей штриховых кодов, в том числе и сложные, в которые можно вписать не только цифры, но еще и весь английский алфавит с некоторыми специальными символами.

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

QR-код

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

Большие квадраты по углам изображения нужны, для ориентации. Простой пример: нарисуйте квадрат на листе бумаге, расставьте по его периметру точки, поверните рисунок и попросите другого человека определить первоначальное положение квадрата. Это окажется весьма затруднительно. Таким образом может быть повернуто и исходное изображение кода. Разметка квадратам позволяет определить правильное расположение графического рисунка.

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

Рейтинг
( 2 оценки, среднее 4.5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]