Сегодня мой руководитель дал мне запрос, в котором говорилось, что мне нужно использовать гибридную разработку и использовать H5 для вызова локальной камеры для сканирования QR-кода. Раньше я выполнял собственное сканирование QR-кода Android, в основном путем вызова плагина zxing. У меня тоже есть вспышка, но я никогда не сталкивался с чистым H5, поэтому я не знал, что делать, поэтому пошел домой ночью и начал искать решения в Интернете. Ниже приведено мое понимание и код сканирования QR H5. коды и вызов местных камер.
Научно-популярный сайт:
Как H5 генерирует объекты компонентов Android
H5 вызывает API локальной камеры Android
Онлайн-генератор изображений QR-кода
Сканирование QR-кода: (с использованием фреймворка mui, ниже приведен HTML-код)
<!doctype html> <html> <head> <meta charset=UTF-8> <title></title> <meta name=viewport content=width=device-width,initial-scale=1,minimum-scale=1 ,maximum-scale=1,user-scalable=no /> <link href=css/mui.min.css rel=stylesheet /> <script src=js/mui.min.js></script> <style type=text/css> #bcid {ширина: 100%; высота: 100%; позиция: абсолютная; фон: #000000 } html, body, div { высота: 100%; ширина: 100% } .fbt{ цвет: #0E76E1; ширина: 50%; #ffffff; float: left; line-height: 44px; text-align: center; </style> </head> <body> <header class=mui-bar mui-bar-nav style=> <a class= mui-action-back mui-icon mui-icon-left-nav mui-pull-left></a> <h1 class=mui-title style=color: #0E76E1;>Сканирование QR-кода H5webapp</h1> <span class=mui-icon mui-icon-spinner-cycle mui-spin mui-pull-right id=turnTheLight></span> </header> <div id = bcid> <!--Div, содержащий элемент управления сканированием--> </div> <div class=mui-bar mui-bar-footer style=padding: 0px;> <div class=fbt onclick=scanPicture();>Выбрать QR-код из альбома</div> <div class=fbt mui-action-back>Отмена</div> </div> <script type=text / javascript> var height = window.innerHeight + 'px';//Получить фактическую высоту страницы var width = window.innerWidth + 'px'; document.getElementById(bcid).style.height= height; document.getElementById(bcid).style.width= width; scan = null;//Сканировать объект mui.plusReady(function () { //Инициализировать сканирование через mui. init(); startRecouncee(); }); function startRecouncee(){ //Включаем сканирование try{ var filter; //Настраиваемый стиль управления сканированием var Styles = {frameColor: #29E52C,scanbarColor: #29E52C,background: } //Конструкция управления сканированием scan = new plus.barcode.Barcode('bcid',filter,styles); scan.onmarked = onmarked; scan.onerror = onerror; scan.start(); // Включение и выключение флэш-обработки var flag = false; document.getElementById(turnTheLight).addEventListener('tap',function(){ if(flag == false){ scan.setFlash(true); flag = true; }else{ scan.setFlash(false); flag = false; } }); }catch(e){ alert(Произошла ошибка:/n+e } }; function onerror(e){; //Всплывающее оповещение об ошибке(e); }; function onmarked(type, result) { //Это функция обратного вызова для сканирования QR-кода, тип — тип обратного вызова для сканирования QR-кода var text = ''; (type ){ //QR, EAN13 и EAN8 — это форматы кодирования QR-кодов, а результатом является возвращаемый результат. текст = 'EAN13: '; Break; case plus.barcode.EAN8: text = 'EAN8: '; alert( text + : + result }; // Выберите изображение QR-кода из альбома function scanPicture() { // OK Непосредственно идентифицировать изображения QR-кода plus.gallery.pick(function(path){ plus.barcode.scan(path,onmarked,function(error){ plus.nativeUI.alert(Невозможно распознать это изображение); }); },function(err){ plus.nativeUI.alert(Failed: +err.message } } </script> </body> </html>);
Ниже представлена структура пакета: инструмент разработки — hbuilder.
Функция mui.plusReady в основном предназначена для инициализации.
startRecouncee() — включить функцию сканирования QR-кодов.
onerror — это сообщение об ошибке
onmarked — это ключевой момент, это функция обратного вызова после сканирования QR-кода, тип — это тип распознавания QR-кода, а результат — это содержимое обратного вызова QR-кода.scanPicture() может напрямую идентифицировать локальные изображения QR-кода и анализировать их.
H5 вызывает местную камеру
<!DOCTYPE html><html><head> <meta charset=utf-8> <meta name=viewport content=width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1, user-scalable=no /> <title></title> <script src=js/mui.min.js></script> <ссылка href=css/mui.min.css rel=stylesheet/> <script type=text/javascript charset=utf-8> document.addEventListener( plusready, function(){ mui.init(); }); { var cam = plus.camera.getCamera(); // массив строк, разрешение камеры, поддерживаемое камерой var Разрешение = cam.supportedImageResolutions[0]; //массив строк, форматы файлов фотографий, поддерживаемые камерой var Formats = cam.supportedImageFormats[0]; //вызов метода фотографии //capturedFile, после завершения фотографии адрес хранения фотографий cam.supportedImageResolutions[0]; //массив строк, форматы файлов фотографий, поддерживаемые камерой var Formats = cam.supportedImageFormats[0]; .captureImage( function(capturedfile){ //Фотография выполнена успешно alert(capturedfile); //Распечатать}, function(){ //Фотография не удалась},{ //Формат параметров фотографии: Форматы, индекс: 1//1 представляет основную камеру, 2 представляет вспомогательную камеру}); var Resolutions = cam.supportedImageResolutions[0]; //массив строк, формат файла фотографии, поддерживаемый камерой var Formats = cam.supportedImageFormats[ 0] ; //Вызов метода фотографии //capturedFile. После завершения фотографии адрес хранения фотографий cam.captureImage(function(capturedFile){ // Фотография успешно сделана alert(capturedFile); // Распечатайте ее // Вызовите системный метод, чтобы получить фотографию по адресу фотографии plus.io.resolvLocalFileSystemURL(capturedFile, // Функция успешного обратного вызова // Функция ввода информации, связанной с файлом ( запись) { вар img = document.createElement(img); img.src = вход.toLocalURL(); document.documentElement.appendChild(img); },function(){ //Ошибка функции обратного вызова }); } </script></head><body> <button onclick=getCamera()>Фотография</button></body></html >
mui.init() — инициализация фреймворка mui.
Метод getCamera() сначала генерирует объект камеры, затем делает фотографию и распечатывает сгенерированный путь к изображению после съемки фотографии.
Подвести итогВыше представлено сканирование QR-кода гибридной разработки HTML5 и вызов локальной камеры, представленный редактором. Надеюсь, это будет вам полезно. Если у вас есть какие-либо вопросы, оставьте мне сообщение, и редактор ответит вам вовремя. Я также хотел бы поблагодарить всех за поддержку сайта боевых искусств VeVb!