html5+ barcode_scan-二维码扫描

Hello H5+   

barcode

Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。

常量:

  • QR: 条码类型常量,QR二维码,数值为0
  • EAN13: 条码类型常量,EAN一维条形码码标准版,数值为1
  • EAN8: 条码类型常量,ENA一维条形码简版,数值为2
  • AZTEC: 条码类型常量,Aztec二维码,数值为3
  • DATAMATRIX: 条码类型常量,Data Matrix二维码,数值为4
  • UPCA: 条码类型常量,UPC码标准版,数值为5
  • UPCE: 条码类型常量,UPC码缩短版,数值为6
  • CODABAR: 条码类型常量,Codabar码,数值为7
  • CODE39: 条码类型常量,Code39一维条形码,数值为8
  • CODE93: 条码类型常量,Code93码,数值为9
  • CODE128: 条码类型常量,Code128码,数值为10
  • ITF: 条码类型常量,ITF码,数值为11
  • MAXICODE: 条码类型常量,MaxiCode二维码,数值为12
  • PDF417: 条码类型常量,PDF 417码,数值为13
  • RSS14: 条码类型常量,RSS 14组合码,数值为14
  • RSSEXPANDED: 条码类型常量,扩展式RSS组合码,数值为15

方法:

  • scan: 通过图片扫描条码数据

对象:

回调方法:

权限:

permissions


{
// ...
"permissions":{
	// ...
	"Barcode": {
		"description": "二维码"
	}
}
}

Barcode

条码扫描识别控件对象

interface plus.barcode.Barcode {
	// Methods
	function void start( options );
	function void cancel();
	function void close();
	function void setFlash( open );

	// Events
	function void onmarked();
	function void onerror();
}

说明:

Barcode对象表示条码识别控件对象,在窗口中显示条码识别控件,使用此对象可自定义条码识别界面。

构造:

方法:

事件:

BarcodeStyles

条码扫描控件样式参数

interface plus.barcode.BarcodeStyles {
	attribute String frameColor;
	attribute String scanbarColor;
	attribute String background;
}

说明:

设置条码识别控件的样式,如扫描框、扫描条的颜色等。

属性:

  • frameColor: _(String 类型 )_扫描框颜色

    颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值/rgba值,默认值为红色。

  • scanbarColor: _(String 类型 )_扫描条颜色

    颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值/rgba值,默认值为红色。

  • background: _(String 类型 )_条码识别控件背景颜色

    颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值,默认值为红色。

BarcodeOptions

条码识别控件扫描参数

interface plus.barcode.BarcodeOptions {
	attribute Boolean conserve;
	attribute String filename;
	attribute Boolean vibrate;
	attribute String sound;
}

说明:

设置条码识别控件扫描条码的参数,如是否保存扫描成功时的截图等。

属性:

  • conserve: _(Boolean 类型 )_是否保存成功扫描到的条码数据时的截图

    如果设置为true则在成功扫描到条码数据时将图片保存,并通过onmarked回调函数的file参数返回保存文件的路径。默认值为false,不保存图片。

  • filename: _(String 类型 )_保存成功扫描到的条码数据时的图片路径

    可通过此参数设置保存截图的路径或名称,如果设置图片文件名称则必须指定文件的后缀名(必须是.png),否则认为是指定目录,文件名称则自动生成。

  • vibrate: _(Boolean 类型 )_成功扫描到条码数据时是否需要震动提醒

    如果设置为true则在成功扫描到条码数据时震动设备,false则不震动。默认值为true。

  • sound: _(String 类型 )_成功扫描到条码数据时播放的提示音类型

    可取值: “none” - 不播放提示音; “default” - 播放默认提示音(5+引擎内置)。 默认值为"default"。

BarcodeSuccessCallback

条码识别成功的回调函数

void BarcodeSuccessCallback ( type, code, file ) {
	// Barcode success code
}

说明:

当获取条码识别成功时的回调函数,用于返回识别成功的条码数据。

参数:

  • type: ( Number ) 必选 识别到的条码类型
    Number类型的值,与Barcode对象定义的条码类型常量一致。
  • code: ( String ) 必选 识别到的条码数据
    从条码图片中扫描出的数据内容,字符串采用UTF8编码格式。
  • file: ( String ) 可选 识别到的条码图片文件路径
    识别到的条码数据图片,为png格式文件,为设置为不保存图片,则返回undefined。

返回值:

void : 无

BarcodeErrorCallback

条码识别错误的回调函数

void BarcodeErrorCallback(error){
	// Error 
	var code = error.code; 			// 错误编码
	var message = error.message;	// 错误描述信息
}

参数:

  • error: ( DOMException ) 必选 条码识别的错误信息
    可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。

返回值:

void : 无

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
		<meta name="HandheldFriendly" content="true" />
		<meta name="MobileOptimized" content="320" />
		<title>Hello H5+</title>
		<script type="text/javascript">
			var ws = null,
				wo = null;
			var scan = null,
				domready = false;
			// H5 plus事件处理
			function plusReady() {
				if (ws || !window.plus || !domready) {
					return;
				}
				// 获取窗口对象
				ws = plus.webview.currentWebview();
				wo = ws.opener();
				// 开始扫描
				ws.addEventListener('show', function () {
					scan = new plus.barcode.Barcode('bcid');
					scan.onmarked = onmarked;
					scan.start({
						conserve: true,
						filename: '_doc/barcode/'
					});
				}, false);
				// 显示页面并关闭等待框
				ws.show('pop-in');
				wo.evalJS('closeWaiting()');
			}
			if (window.plus) {
				plusReady();
			} else {
				document.addEventListener('plusready', plusReady, false);
			}
			// 监听DOMContentLoaded事件
			document.addEventListener('DOMContentLoaded', function () {
				domready = true;
				plusReady();
			}, false);
			// 二维码扫描成功
			function onmarked(type, result, file) {
				switch (type) {
					case plus.barcode.QR:
						type = 'QR';
						break;
					case plus.barcode.EAN13:
						type = 'EAN13';
						break;
					case plus.barcode.EAN8:
						type = 'EAN8';
						break;
					default:
						type = '其它' + type;
						break;
				}
				result = result.replace(/\n/g, '');
				wo.evalJS("scaned('" + type + "','" + result + "','" + file + "');");
				back();
			}
			// 从相册中选择二维码图片 
			function scanPicture() {
				plus.gallery.pick(function (path) {
					plus.barcode.scan(path, onmarked, function (error) {
						plus.nativeUI.alert('无法识别此图片');
					});
				}, function (err) {
					console.log('Failed: ' + err.message);
				});
			}
				// 暂停扫描 
			function scanSwitch() {
				if (bCancel) {
					scan.start({
						conserve: true,
						filename: '_doc/barcode/'
					});
					btCancel && (btCancel.innerText = '暂 停');
				} else {
					scan.cancel();
					btCancel && (btCancel.innerText = '开 始');
				}
				bCancel = !bCancel;
			}
		</script>
	</head>

	<body style="background-color: #000000;">
		<div id="bcid">
			<div style="height:40%"></div>
			<p class="tip">...载入中...</p>
		</div>
		<footer>
			<div class="fbt" onclick="back()">取  消</div>
			<div class="fbt" onclick="scanPicture()">从相册选择二维码</div>
		</footer>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_41961749/article/details/82968986