HTML5+规范:barcode(条码扫描)
Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。
1、常量
(1)、QR: 条码类型常量,QR二维码,数值为0,1994年由日本Denso-Wave公司发明,QR来自英文Quick Response的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。 目前使用最广泛的二维码。
(2)、EAN13: 条码类型常量,EAN一维条形码码标准版,数值为1,国际物品编码协会在全球推广应用的商品条码,是由13位数字组成。 目前使用最广泛的一维条形码。
(3)、EAN8: 条码类型常量,ENA一维条形码简版,数值为2,国际物品编码协会在全球推广应用的商品条码,是由8位数字组成。
(4)、AZTEC: 条码类型常量,Aztec二维码,数值为3,Andrew Longacre发明于1995年,该代码是用于国际出版。最小的Aztec码符号编码13个数字或12个英文字母。最大的Aztec码符号编码3832数字或3067英文字母或1914字节的数据。
(5)、DATAMATRIX: 条码类型常量,Data Matrix二维码,数值为4,Data Matrix原名Data code,由美国国际资料公司(International Data Matrix, 简称IDMatrix)于1989年发明。可编码字元集包括全部的ASCII字元及扩充ASCII字元,容量可包含2235个英文数字资料、1556个8位元资料,3116个数字资料。由于Data Matrix二维条码只需要读取资料的20%即可精确辨读,因此很适合应用在条码容易受损的场所。
(6)、UPCA: 条码类型常量,UPC码标准版,数值为5,UPC码是美国统一代码委员会制定的一种商品用条码,主要用于美国和加拿大地区,常在美国进口的商品上可以看到。UPC码标准版由12位数字构成,故其字码集为数字0~9。
(7)、UPCE: 条码类型常量,UPC码缩短版,数值为6,UPC码是美国统一代码委员会制定的一种商品用条码,主要用于美国和加拿大地区,常在美国进口的商品上可以看到。UPC码缩短版由8位数字构成,故其字码集为数字0~9。
(8)、CODABAR: 条码类型常量,Codabar码,数值为7,Codabar码最初是为零售价格标签系统而研制开发的。1975年,National Retail Merchants Association(NRMA)选择了其它符号类型作为标准后,Codabar开始在多个方面用于非零售应用领域,如图书馆、货运和医药业。
(9)、CODE39: 条码类型常量,Code39一维条形码,数值为8,Code 39码是Intermec公司于1975年推出的一维条码, 39码是一种可供使用者双向扫瞄的分散式条码,也就是说相临两资料码之间,39码必须包含一个不具任何意义的空白(或细白,其逻辑值为0),且 39码具有支援文数字的能力,编码规则简单、误码率低、所能表示字符个数多等特点,39码在各个领域有着极为广泛的应用。
(10)、CODE93: 条码类型常量,Code93码,数值为9,Code 93码的条码符号是由Intermec公司于1982年设计的 提供更高的密度和数据安全增强code39 。它是一个字母,长度可变符号。代码93主要用于由加拿大邮政编码补充提供的资料。
(11)、CODE128: 条码类型常量,Code128码,数值为10,CODE128码是1981年引入的一种高密度条码,CODE128 码可表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。CODE128码是广泛应用在企业内部管理、生产流程、物流控制系统方面的条码码制,由于其优良的特性在管理信息系统的设计中被广泛使用。
(12)、ITF: 条码类型常量,ITF码,数值为11,ITF条码,又称交叉二五条码,由14位数字字符代表组成。主要用于运输包装,是印刷条件较差,不允许印刷EAN-13和UPC-A条码时应选用的一种条码。
(13)、MAXICODE: 条码类型常量,MaxiCode二维码,数值为12,1996年时,美国自动辨识协会(AIMUSA)制定统一的符号规格,称为Maxicode二维条码,也有人称USS-Maxicode二维条码(Uniform Symbology Specification-Maxicode)。
(14)、PDF417: 条码类型常量,PDF 417码,数值为13,PDF417条码是由美国SYMBOL公司发明的,PDF(Portable Data File)意思是“便携数据文件”。组成条码的每一个条码字符由4个条和4个空共17个模块构成,故称为PDF417条码。PDF417条码最大的优势在于其庞大的数据容量和极强的纠错能力。
(15)、RSS14: 条码类型常量,RSS 14组合码,数值为14,RSS条码是有国际物品编码协会EAN和美国统一代码委员会UCC开发的RSS(Reduced Space Symbology)条码符号。它是一种一维码和二维码的组合码。和其它线性条码相比,RSS系列码制具有更高的密度,因为它可以表示更多的字符。
(16)、RSSEXPANDED: 条码类型常量,扩展式RSS组合码,数值为15,RSS条码是有国际物品编码协会EAN和美国统一代码委员会UCC开发的RSS(Reduced Space Symbology)条码符号。它是一种一维码和二维码的组合码。和其它线性条码相比,RSS系列码制具有更高的密度,因为它可以表示更多的字符。扩展式RSS码是长度可以变化的线性码制,能够对74个数字字符或41个字母字符的AI单元数据传数据进行编码。
2、方法
scan: 通过图片扫描条码数据
void plus.barcode.scan( path, successCB, errorCB, filters );
说明:直接通过图片扫描条码数据,成功扫描到条码数据后通过successCallback回调返回,失败则通过errorCallback回调返回。
参数:
path: ( String ) 必选 扫描的图片的地址,图片的地址必须是本地文件地址,如URLType类型(如以"_www"、"_doc"、"_documents"、"_downloads"开头的相对URL路径)或者系统绝对路径。
successCB: ( BarcodeSuccessCallback ) 必选 扫描条码码图片成功的回调函数,返回条码数据
errorCB: ( BarcodeErrorCallback ) 可选 扫描条码图片失败的回调函数,返回错误信息
filters: ( Array ) 可选 要识别的条码类型过滤器,为条码类型常量数组,条码识别引擎可支持多种二维码及一维码类型,默认情况支持QR、EAN13、EAN8三种类型。 可通过此参数设置需要支持的更多条码类型(注意:设置支持的条码类型越多,扫描识别效率将会降低)。
返回值:void : 无
平台支持:Android - 2.2+ (支持)、iOS - 4.3+ (支持)
示例:
<script type="text/javascript" > // 扩展API加载完毕后调用onPlusReady回调函数 document.addEventListener( "plusready", onPlusReady, false ); // 扩展API加载完毕,现在可以正常调用扩展API function onPlusReady() { var e = document.getElementById("scan"); e.removeAttribute( "disabled" ); } // 从图片中扫描 function scanImg() { plus.barcode.scan( '_www/barcode.png', function (type,result) { alert( "Scan success:("+type+")"+result ); }, function (error) { alert( error.message ); } ); } </script>
3、对象
3.1、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对象表示条码识别控件对象,在窗口中显示条码识别控件,使用此对象可自定义条码识别界面。
1)、构造:Barcode.constructor(id,filters,styles): 创建Barcode对象
var bc = new plus.barcode.Barcode( id, filters, styles );
说明:创建Barcode对象,并指定Barcode对象的在界面中关联p或object标签的id号。
参数:
id: ( String ) 必选 条码识别控件在Webview窗口的DOM节点的id值,为了定义条码识别控件在Webview窗口中的位置,需要指定控件定位标签(p或objecct)的id号,系统将根据此id号来确定条码识别控件的大小及位置。
filters: ( Array[ Number ] ) 可选 要识别的条码类型过滤器,为条码类型常量数组。条码识别引擎可支持多种二维码及一维码类型,默认情况支持QR、EAN13、EAN8三种类型。 可通过此参数设置需要支持的更多条码类型(注意:设置支持的条码类型越多,扫描识别效率将会降低)。
styles: ( BarcodeStyles) 可选 条码识别控件样式,可定义条码识别控件的样式,如扫描框、扫描条的颜色等。
返回值:Barcode :
示例:
// 创建支持默认条码类型的识别控件 var bc = new plus.barcode.Barcode( "barcode" ); // 创建支持 var filter = [plus.barcode.QR,plus.barcode.AZTEC]; var bc2 = new plus.barcode.Barcode( "barcode", filter );
2)、方法
(1)、start: 开始条码识别
void bc.start( options );
说明:开始调用系统摄像头获取图片数据进行扫描识别,当识别出条码数据时通过onmarked回调函数返回。
参数:optons: ( BarcodeOptions) 可选 条码识别的参数,通过此参数可设置是否获取扫描成功的条码截图数据等。
返回值:void : 无
(2)、cancel: 结束条码识别
void bc.cancel();
说明:结束对摄像头获取图片数据进行条码识别操作,同时关闭摄像头的视频捕获。 结束后可调用start方法重新开始识别。
返回值:void : 无
(3)、close: 关闭条码识别控件
void bc.close();
说明:释放控件占用系统资源,调用close方法后控件对象将不可使用。
返回值:void : 无
(4)、setFlash: 是否开启闪光灯
void obj.setFlash( open );
说明:设置条码扫描控件在扫描时是否开启摄像头的闪光灯,默认值为不开启闪光灯。
参数:open: ( Boolean ) 必选 是否开启闪光灯,可取值true或false,true表示打开闪光灯,false表示关闭闪光灯。
返回值:void : 无
3)、事件
(1)、onmarked: 条码识别成功事件
void obj.onmarked = function ( type, code, file ) { // loaded code }
说明:BarcodeSuccessCallback 类型,扫描控件识别到有效的条码数据时触发的成功事件,并返回扫描结果
(2)、onerror: 条码识别错误事件
void obj.onerror = function ( error ) { // loaded code }
说明:BarcodeErrorCallback 类型,描控件识别过程中发生错误时触发的失败事件,并返回错误信息。
示例:
<script type="text/javascript" > // 扩展API加载完毕后调用onPlusReady回调函数 document.addEventListener( "plusready", onPlusReady, false ); // 扩展API加载完毕,现在可以正常调用扩展API function onPlusReady() { var e = document.getElementById("scan"); e.removeAttribute( "disabled" ); } var scan = null; function onmarked( type, result ) { var text = '未知: '; switch(type){ case plus.barcode.QR: text = 'QR: '; break; case plus.barcode.EAN13: text = 'EAN13: '; break; case plus.barcode.EAN8: text = 'EAN8: '; break; } alert( text+result ); } function startRecognize() { // 创建支持默认条码类型的识别控件 scan = new plus.barcode.Barcode('bcid'); scan.onmarked = onmarked; } function startScan() { scan.start(); } function cancelScan() { scan.cancel(); } function setFlash() { scan.setFlash(); } </script>
3.2、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值,默认值为红色。
3.3、BarcodeOptions: 条码识别控件扫描参数
interface plus.barcode.BarcodeOptions {
attribute Boolean conserve;
attribute String filename;
}
说明:设置条码识别控件扫描条码的参数,如是否保存扫描成功时的截图等。
属性:
conserve: (Boolean 类型 )是否保存成功扫描到的条码数据时的截图,如果设置为true则在成功扫描到条码数据时将图片保存,并通过onmarked回调函数的file参数返回保存文件的路径。默认值为false,不保存图片。
filename: (String 类型 )保存成功扫描到的条码数据时的图片路径,可通过此参数设置保存截图的路径或名称,如果设置图片文件名称则必须指定文件的后缀名(必须是.png),否则认为是指定目录,文件名称则自动生成。
4、回调方法
4.1、BarcodeSuccessCallback: 条码识别成功的回调函数
void BarcodeSuccessCallback ( type, code, file ) {
// Barcode success code
}
说明:当获取条码识别成功时的回调函数,用于返回识别成功的条码数据。
参数:
type: ( Number ) 必选 识别到的条码类型,Number类型的值,与Barcode对象定义的条码类型常量一致。
code: ( String ) 必选 识别到的条码数据,从条码图片中扫描出的数据内容,字符串采用UTF8编码格式。
file: ( String ) 可选 识别到的条码图片文件路径,识别到的条码数据图片,为png格式文件,为设置为不保存图片,则返回undefined。
返回值:void : 无
4.2、BarcodeErrorCallback: 条码识别错误的回调函数
void BarcodeErrorCallback( error ) {
// Handle error
}
参数:error: ( DOMException ) 必选 条码识别的错误信息
返回值:void : 无