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: 通过图片扫描条码数据
对象:
- Barcode: 条码扫描识别控件对象
- BarcodeStyles: 条码扫描控件样式参数
- BarcodeOptions: 条码识别控件扫描参数
回调方法:
- BarcodeSuccessCallback: 条码识别成功的回调函数
- BarcodeErrorCallback: 条码识别错误的回调函数
权限:
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对象表示条码识别控件对象,在窗口中显示条码识别控件,使用此对象可自定义条码识别界面。
构造:
- Barcode.constructor(id,filters,styles): 创建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>