Статьи

Сканирование QR-кода с помощью Cordova

Штрих-код — это машиночитаемое изображение, которое содержит некоторые данные об объекте, к которому он прикреплен. Код быстрого ответа (QR-код) — это популярный тип штрих-кода для мобильного использования благодаря его быстрой читаемости и большей емкости хранения по сравнению с обычными штрих-кодами.

В этом уроке я создам приложение Cordova, которое может сканировать QR-коды и хранить данные, полученные при декодировании QR-кодов. Для сканирования штрих-кода я буду использовать плагин BarcodeScanner Cordova.

Обзор штрих-кодов

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

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

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

Общие штрих-коды

QR код

QR-коды являются одним из самых популярных типов штрих-кодов, используемых сегодня, с возможностью кодировать до 4296 символов. QR-код является 2D, как вы можете видеть на изображении выше.

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

Существует несколько типов QR-кодов: Модель 1, Микро, IQR, SQRC и LogoQ. Модель 1 является наиболее распространенным типом, и я буду использовать его в этом примере приложения.

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

Приложение, которое мы создадим в этом руководстве, можно использовать для сканирования и хранения QR-кодов, которые являются URL-адресами. Он позволяет открывать URL-адреса внутри приложения с помощью окна InAppBrowser .

BarcodeScanner Cordova Плагин

Плагины BarcodeScanner Cordova позволяют сканировать и декодировать различные типы штрих-кодов. Плагин работает на платформах Android, iOS, Windows и Blackberry.

Вот основной код, который показывает, как запустить приложение камеры и сканировать штрих-код с помощью плагина BarcodeScanner Cordova:

 cordova.plugins.barcodeScanner.scan( function (result) { if(!result.cancelled) { alert("Barcode type is: " + result.format); alert("Decoded text is: " + result.text); } else { alert("You have cancelled scan"); } }, function (error) { alert("Scanning failed: " + error); } ); 

Создание приложения для сканирования QR-кодов

Давайте начнем с создания приложения сканера QR-кода. Это приложение позволит вам сканировать и хранить QR-коды, которые являются URL-адресами. Он также позволяет открывать URL-адреса внутри приложения с помощью окна InAppBrowser.

Вы можете найти окончательный код этого проекта на gitHub .

начало

Я не буду рассказывать об установке и создании приложения Cordova. Если вы еще этого не сделали, прочитайте руководство по началу работы . Инструкции по запуску и сборке приложения доступны на той же странице.

Дайте приложению подходящее имя и добавьте платформы, которые вы хотите поддерживать.

Поскольку я буду использовать плагины BarcodeScanner, Dialog и InAppBrowser, установите их, выполнив следующие команды в каталоге проекта Cordova:

 cordova plugin add phonegap-plugin-barcodescanner cordova plugin add org.apache.cordova.dialogs cordova plugin add org.apache.cordova.inappbrowser 

Внутри файла www / index.html добавьте следующие файлы JavaScript и CSS перед закрывающим тегом body :

 <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <script type="text/javascript" src="cordova.js"></script> 

Удалить текущий:

 <script type="text/javascript" src="js/index.js"></script> 

Здесь я добавил jQuery и jQuery Mobile из CDN. Вы можете встроить эти файлы локально, чтобы приложение работало без подключения к Интернету.

В зависимости от платформы, которую вы строите для вас, может потребоваться изменить эту строку:

 <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 

См. Комментарии над этой строкой, автоматически сгенерированные Cordova для руководства.

Примечание . Весь код JavaScript, начиная с этого момента, также следует помещать в тег script перед закрывающим тегом body .

Initialize

Мы будем хранить отсканированные данные, используя локальное хранилище HTML5. Поместите этот код в тег script чтобы инициализировать локальное хранилище, если оно еще не было:

 if(localStorage.getItem("LocalData") == null) { var data = []; data = JSON.stringify(data); localStorage.setItem("LocalData", data); } 

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

Создание главного экрана

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

На домашнем экране две кнопки. Они предназначены для сканирования и отображения данных.

Поместите этот код в тег body страницы index.html (заменив существующие элементы div):

 <div data-role="page" id="home"> <div data-role="header"> <h1>Home</h1> </div> <div data-role="main" class="ui-content"> <p> <a target="_blank" href="javascript:scan();" style="text-decoration: none"><button>Scan</button></a> <a target="_blank" href="#display" style="text-decoration: none"><button>Display Scanned Data</button></a> </p> </div> </div> 

Вот как выглядит страница:

QR-сканер

сканирование

Когда пользователь нажимает кнопку « Сканировать» , вызывается функция с именем scan() . Вот функция scan . Поместите его в тег script :

 function scan() { cordova.plugins.barcodeScanner.scan( function (result) { if(!result.cancelled) { if(result.format == "QR_CODE") { navigator.notification.prompt("Please enter name of data", function(input){ var name = input.input1; var value = result.text; var data = localStorage.getItem("LocalData"); console.log(data); data = JSON.parse(data); data[data.length] = [name, value]; localStorage.setItem("LocalData", JSON.stringify(data)); alert("Done"); }); } } }, function (error) { alert("Scanning failed: " + error); } ); } 

Здесь я проверяю тип штрих-кода после того, как пользователь его отсканировал. Если штрих-код является QR-кодом, то мы продвигаемся дальше, в противном случае мы ничего не делаем.

Если тип штрих-кода — QR-код, то мы просим пользователя ввести имя для идентификации отсканированного текста и сохранить его в локальном хранилище. Наконец, мы отображаем окно с текстом « Готово» .

Вот как выглядит экран при первом нажатии кнопки « Сканировать» :

Экран приложения после нажатия кнопки

Отображение

Когда пользователь нажимает кнопку « Показать данные» , он переключается на страницу с display идентификатора.

Давайте создадим эту страницу. Поместите этот код внутри тега body :

 <div data-role="page" id="display"> <div data-role="header"> <a target="_blank" href="#home" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a> <h1>Display</h1> </div> <div data-role="main" class="ui-content"> <table data-role="table" data-mode="column" id="allTable" class="ui-responsive table-stroke"> <thead> <tr> <th>Name</th> <th>Value</th> </tr> </thead> <tbody> </tbody> </table> </div> </div> 

Здесь мы отображаем пустую таблицу. Чтобы заполнить таблицу данными локального хранилища, поместите этот код в тег script :

 $(document).on("pagebeforeshow", "#display", function() { $("table#allTable tbody").empty(); var data = localStorage.getItem("LocalData"); console.log(data); data = JSON.parse(data); var html = ""; for(var count = 0; count < data.length; count++) { html = html + "<tr><td>" + data[count][0] + "</td><td><a href='javascript:openURL(\"" + data[count][1] + "\")'>" + data[count][1] + "</a></td></tr>"; } $("table#allTable tbody").append(html).closest("table#allTable").table("refresh").trigger("create"); }); function openURL(url) { window.open(url, '_blank', 'location=yes'); } 

Перед отрисовкой страницы мы заполняем таблицу локальными данными. При щелчке URL-адреса мы openURL функцию openURL которая открывает URL-адрес в окне InAppBrowser .

Вот как выглядит страница:

Локальные данные отображаются в приложении

Вот как InAppBrowser окно InAppBrowser :

Окно InAppBrowser

Вывод

Это руководство было основным введением в чтение штрих-кода с помощью приложения Cordova. Мы узнали, как различать различные типы штрих-кодов, плагины, которые могут нам помочь, и как сканировать и хранить штрих-коды.

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