# [barcode]()
Barcode模塊管理二維碼,提供二維碼掃描識別功能,可調用設備的攝像頭對二維碼圖片掃描進行數據輸入。通過plus.barcode可獲取二維碼管理對象。
### 常量:
- [QR](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.QR): 二維碼類型常量,QR碼,數值為0
- [EAN13](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.EAN13): 二維碼類型常量,EAN碼標準版,數值為1
- [EAN8](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.EAN8): 二維碼類型常量,ENA碼簡版,數值為2
- [AZTEC](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.AZTEC): 二維碼類型常量,Aztec碼,數值為3
- [DATAMATRIX](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.DATAMATRIX): 二維碼類型常量,Data Matrix碼,數值為4
- [UPCA](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.UPCA): 二維碼類型常量,UPC碼標準版,數值為5
- [UPCE](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.UPCE): 二維碼類型常量,UPC碼縮短版,數值為6
- [CODABAR](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.CODABAR): 二維碼類型常量,Codabar碼,數值為7
- [CODE39](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.CODE39): 二維碼類型常量,Code39碼,數值為8
- [CODE93](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.CODE93): 二維碼類型常量,Code93碼,數值為9
- [CODE128](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.CODE128): 二維碼類型常量,Code128碼,數值為10
- [ITF](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.ITF): 二維碼類型常量,ITF碼,數值為11
- [MAXICODE](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.MAXICODE): 二維碼類型常量,MaxiCode碼,數值為12
- [PDF417](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.PDF417): 二維碼類型常量,PDF 417碼,數值為13
- [RSS14](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.RSS14): 二維碼類型常量,RSS 14碼,數值為14
- [RSSEXPANDED](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.RSSEXPANDED): 二維碼類型常量,擴展式RSS碼,數值為15
### 方法:
- [scan](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.scan): 通過圖片掃描二維碼數據
### 對象:
- [Barcode](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode): 二維碼識別控件對象
- [BarcodeOption](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeOption): JSON對象,二維碼識別控件掃描參數
### 回調方法:
- [BarcodeSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeSuccessCallback): 二維碼識別成功的回調函數
- [BarcodeErrorCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeErrorCallback): 二維碼識別錯誤的回調函數
### 權限:
permissions
~~~
"Barcode": {
"description": "訪問二維碼掃描插件"
}
~~~
# [QR]()
二維碼類型常量,QR碼,數值為0
~~~
plus.barcode.QR;
~~~
### 說明:
Number 類型
1994年由日本Denso-Wave公司發明,QR來自英文Quick Response的縮寫,即快速反應的意思,源自發明者希望QR碼可讓其內容快速被解碼。
# [EAN13]()
二維碼類型常量,EAN碼標準版,數值為1
~~~
plus.barcode.EAN13;
~~~
### 說明:
Number 類型
由國際物品編碼協會在全球推廣應用的商品條碼,是由13位數字組成。
# [EAN8]()
二維碼類型常量,ENA碼簡版,數值為2
~~~
plus.barcode.EAN8;
~~~
### 說明:
Number 類型
由國際物品編碼協會在全球推廣應用的商品條碼,是由8位數字組成。
# [AZTEC]()
二維碼類型常量,Aztec碼,數值為3
~~~
plus.barcode.AZTEC;
~~~
### 說明:
Number 類型
由Andrew Longacre發明于1995年,該代碼是用于國際出版。最小的Aztec碼符號編碼13個數字或12個英文字母。最大的Aztec碼符號編碼3832數字或3067英文字母或1914字節的數據。
# [DATAMATRIX]()
二維碼類型常量,Data Matrix碼,數值為4
~~~
plus.barcode.DATAMATRIX;
~~~
### 說明:
Number 類型
Data Matrix原名Data code,由美國國際資料公司(International Data Matrix, 簡稱IDMatrix)于1989年發明。可編碼字元集包括全部的ASCII字元及擴充ASCII字元,容量可包含2235個英文數字資料、1556個8位元資料,3116個數字資料。由于Data Matrix二維條碼只需要讀取資料的20%即可精確辨讀,因此很適合應用在條碼容易受損的場所。
# [UPCA]()
二維碼類型常量,UPC碼標準版,數值為5
~~~
plus.barcode.UPCA;
~~~
### 說明:
Number 類型
UPC碼是美國統一代碼委員會制定的一種商品用條碼,主要用于美國和加拿大地區,常在美國進口的商品上可以看到。UPC碼標準版由12位數字構成,故其字碼集為數字0~9。
# [UPCE]()
二維碼類型常量,UPC碼縮短版,數值為6
~~~
plus.barcode.UPCE;
~~~
### 說明:
Number 類型
UPC碼是美國統一代碼委員會制定的一種商品用條碼,主要用于美國和加拿大地區,常在美國進口的商品上可以看到。UPC碼縮短版由8位數字構成,故其字碼集為數字0~9。
# [CODABAR]()
二維碼類型常量,Codabar碼,數值為7
~~~
plus.barcode.CODABAR;
~~~
### 說明:
Number 類型
Codabar碼最初是為零售價格標簽系統而研制開發的。1975年,National Retail Merchants Association(NRMA)選擇了其它符號類型作為標準后,Codabar開始在多個方面用于非零售應用領域,如圖書館、貨運和醫藥業。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持Codabar碼的識別
# [CODE39]()
二維碼類型常量,Code39碼,數值為8
~~~
plus.barcode.CODE39;
~~~
### 說明:
Number 類型
Code 39碼是Intermec公司于1975年推出的一維條碼, 39碼是一種可供使用者雙向掃瞄的分散式條碼,也就是說相臨兩資料碼之間,39碼必須包含一個不具任何意義的空白(或細白,其邏輯值為0),且 39碼具有支援文數字的能力,編碼規則簡單、誤碼率低、所能表示字符個數多等特點,39碼在各個領域有著極為廣泛的應用。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持Code39碼的識別
# [CODE93]()
二維碼類型常量,Code93碼,數值為9
~~~
plus.barcode.CODE93;
~~~
### 說明:
Number 類型
Code 93碼的條碼符號是由Intermec公司于1982年設計的 提供更高的密度和數據安全增強code39 。它是一個字母,長度可變符號。代碼93主要用于由加拿大郵政編碼補充提供的資料。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持Code93碼的識別
# [CODE128]()
二維碼類型常量,Code128碼,數值為10
~~~
plus.barcode.CODE128;
~~~
### 說明:
Number 類型
CODE128碼是1981年引入的一種高密度條碼,CODE128 碼可表示從 ASCII 0 到ASCII 127 共128個字符,故稱128碼。CODE128碼是廣泛應用在企業內部管理、生產流程、物流控制系統方面的條碼碼制,由于其優良的特性在管理信息系統的設計中被廣泛使用。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持Code128碼的識別
# [ITF]()
二維碼類型常量,ITF碼,數值為11
~~~
plus.barcode.ITF;
~~~
### 說明:
Number 類型
ITF條碼,又稱交叉二五條碼,由14位數字字符代表組成。主要用于運輸包裝,是印刷條件較差,不允許印刷EAN-13和UPC-A條碼時應選用的一種條碼。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持ITF碼的識別
# [MAXICODE]()
二維碼類型常量,MaxiCode碼,數值為12
~~~
plus.barcode.MAXICODE;
~~~
### 說明:
Number 類型
1996年時,美國自動辨識協會(AIMUSA)制定統一的符號規格,稱為Maxicode二維條碼,也有人稱USS-Maxicode二維條碼(Uniform Symbology Specification-Maxicode)。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持MaxiCode碼的識別
# [PDF417]()
二維碼類型常量,PDF 417碼,數值為13
~~~
plus.barcode.PDF417;
~~~
### 說明:
Number 類型
PDF417條碼是由美國SYMBOL公司發明的,PDF(Portable Data File)意思是“便攜數據文件”。組成條碼的每一個條碼字符由4個條和4個空共17個模塊構成,故稱為PDF417條碼。PDF417條碼最大的優勢在于其龐大的數據容量和極強的糾錯能力。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持PDF 417碼的識別
# [RSS14]()
二維碼類型常量,RSS 14碼,數值為14
~~~
plus.barcode.RSS14;
~~~
### 說明:
Number 類型
RSS條碼是有國際物品編碼協會EAN和美國統一代碼委員會UCC開發的RSS(Reduced Space Symbology)條碼符號。它是一種一維碼和二維碼的組合碼。和其它線性條碼相比,RSS系列碼制具有更高的密度,因為它可以表示更多的字符。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持RSS14碼的識別
# [RSSEXPANDED]()
二維碼類型常量,擴展式RSS碼,數值為15
~~~
plus.barcode.RSSEXPANDED;
~~~
### 說明:
Number 類型
RSS條碼是有國際物品編碼協會EAN和美國統一代碼委員會UCC開發的RSS(Reduced Space Symbology)條碼符號。它是一種一維碼和二維碼的組合碼。和其它線性條碼相比,RSS系列碼制具有更高的密度,因為它可以表示更多的字符。擴展式RSS碼是長度可以變化的線性碼制,能夠對74個數字字符或41個字母字符的AI單元數據傳數據進行編碼。
### 平臺支持
- Android - 2.2+ (支持)
- iOS - 4.3+ (不支持): 不支持擴展式RSS碼的識別
# [scan]()
通過圖片掃描二維碼數據
~~~
void plus.barcode.scan( path, successCB, errorCB, filters );
~~~
### 說明:
從圖片中掃描二維碼數據,掃描到二維碼數據后通過successCallback回調返回數據,掃描失敗則通過errorCallback回調返回。
### 參數:
- path: *( DOMString ) 必選 *要掃描的圖片的地址
圖片的地址必須是本地文件地址,必須是URLType類型(如以"_www"、"_doc"、"_documents"、"_downloads"開頭的相對URL路徑)。
- successCB: *( [BarcodeSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeSuccessCallback) ) 必選 *掃描二維碼數據成功的回調函數,用于返回二維碼數據
- errorCB: *( [BarcodeErrorCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeErrorCallback) ) 可選 *掃描二維碼數據失敗的回調函數,用于返回錯誤信息
- filters: *( Array ) 可選 *要識別的二維碼類型過濾器,為二維碼類型常量數組
二維碼識別引擎可支持多種二維碼類型,默認情況支持QR、EAN13、EAN8三種類型。可通過此參數設置需要支持的二維碼類型(設置支持的二維碼類型越多,識別效率將會降低)。
### 返回值:
void : 無
### 平臺支持:
- Android - 2.2+ (支持)
- iOS - 4.3+ (支持)
### 示例:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Barcode Example</title>
<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>
<style type="text/css">
*{
-webkit-user-select: none;
}
html,body{
margin: 0px;
padding: 0px;
height: 100%;
}
</style>
</head>
<body >
<input id="scan" type='button' disabled="disabled" onclick='scanImg()' value='掃描圖片'></input>
</body>
</html>
~~~
# [Barcode]()
二維碼識別控件對象
~~~
interface plus.barcode.Barcode {
// Methods
function void start( options );
function void cancel();
function void setFlash( open );
// Events
function void onmarked();
function void onerror();
}
~~~
### 說明:
Barcode對象表示二維碼識別控件對象,用于在窗口中顯示二維碼識別控件,使用此對象可自定義二維碼識別界面。
### 構造:
- [Barcode.constructor(id,filters)](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.Barcode.constructor(id,filters)): 創建Barcode對象
### 方法:
- [start](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.start): 開始二維碼識別
- [cancel](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.cancel): 結束二維碼識別
- [setFlash](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.setFlash): 是否開啟閃光燈
### 事件:
- [onmarked](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.onmarked): 二維碼識別成功事件
- [onerror](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode.onerror): 二維碼識別錯誤事件
### 示例:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Barcode Example</title>
<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>
<style type="text/css">
*{
-webkit-user-select: none;
}
html,body{
margin: 0px;
padding: 0px;
height: 100%;
}
#bcid {
background:#0F0;
height:480px;
width:360px;
}
</style>
</head>
<body >
<input type='button' onclick='startRecognize()' value='創建掃描控件' />
<input type='button' onclick='startScan()' value='開始掃描' />
<input type='button' onclick='cancelScan()' value='取消掃描' />
<input type='button' onclick='setFlash()' value='開啟閃光燈' />
<div id= "bcid"></div>
<input type='text' id='text'/>
</body>
</html>
~~~
# [Barcode.constructor(id,filters)]()
創建Barcode對象
~~~
var bc = new plus.barcode.Barcode( id, filters );
~~~
### 說明:
創建Barcode對象,并指定Barcode對象的在界面中關聯div或object標簽的id號。
### 參數:
- id: *( DOMString ) 必選 *二維碼識別控件在窗口的對應obj節點的id值
為了定義二維碼識別控件在窗口中的位置,需要指定控件定位標簽(div或objecct)的id號,系統將根據此id號來確定二維碼識別控件的位置。
- filters: *( Array[Number] ) 可選 *要識別的二維碼類型過濾器,為二維碼類型常量數組
二維碼識別引擎可支持多種二維碼類型,默認情況支持QR、EAN13、EAN8三種類型。可通過此參數設置需要支持的二維碼類型(設置支持的二維碼類型越多,識別效率將會降低)。
### 返回值:
[Barcode](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.Barcode) :
### 示例:
~~~
// 創建支持默認二維碼類型的識別控件
var bc = new plus.barcode.Barcode( "barcode" );
// 創建支持
var filter = [plus.barcode.QR,plus.barcode.AZTEC];
var bc2 = new plus.barcode.Barcode( "barcode", filter );
~~~
# [start]()
開始二維碼識別
~~~
void bc.start( options );
~~~
### 說明:
開始對攝像頭獲取圖片數據進行二維碼識別,當識別出二維碼數據時通過onmarked回調函數返回。
### 參數:
- optons: *( [BarcodeOption](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeOption) ) 可選 *二維碼識別的參數
通過此參數可設置是否獲取掃描的的二維碼圖片數據。
### 返回值:
void : 無
# [cancel]()
結束二維碼識別
~~~
void bc.cancel();
~~~
### 說明:
結束對攝像頭獲取圖片數據進行二維碼識別操作。
### 參數:
無
### 返回值:
void : 無
# [setFlash]()
是否開啟閃光燈
~~~
void obj.setFlash( open );
~~~
### 說明:
設置二維碼掃描控件顯示時是否開啟攝像頭的閃光燈,默認是不開啟的。
### 參數:
- open: *( Boolean ) 必選 *是否開啟閃光燈
可取值true或false,true表示打開閃光燈,false表示關閉閃光燈。
### 返回值:
void : 無
# [onmarked]()
二維碼識別成功事件
~~~
void obj.onmarked = function ( type, code, file ) {
// loaded code
}
~~~
### 說明:
[BarcodeSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeSuccessCallback) 類型
當掃描控件識別到有效的二維碼數據時觸發,并返回掃描結果。
# [onerror]()
二維碼識別錯誤事件
~~~
void obj.onerror = function ( error ) {
// loaded code
}
~~~
### 說明:
[BarcodeErrorCallback](http://www.dcloud.io/docs/api/zh_cn/barcode.shtml#plus.barcode.BarcodeErrorCallback) 類型
當掃描控件識別發生錯誤時時觸發,并返回錯誤信息。
# [BarcodeOption]()
JSON對象,二維碼識別控件掃描參數
~~~
interface plus.barcode.BarcodeOption {
attribute Boolean conserve;
attribute DOMString filename;
}
~~~
### 說明:
用于設置二維碼識別控件掃描二維碼的參數,如是否保存掃描成功時的圖片等。
### 屬性:
- conserve: *(Boolean 類型)*是否保存成功掃描到的二維碼數據時的圖片
如果設置為true則在成功掃描到二維碼數據時將圖片保存,并通過onmarked回調函數的file參數返回保存文件的路徑。默認值為false,不保存圖片。
- filename: *(DOMString 類型)*保存成功掃描到的二維碼數據時的圖片路徑
可通過此參數設置保存圖片的路徑或名,如果設置圖片文件名稱則必須指定文件的后綴名(必須是.png),否則認為是指定目錄,文件名稱則自動生成。
# [BarcodeSuccessCallback]()
二維碼識別成功的回調函數
~~~
void BarcodeSuccessCallback ( type, code, file ) {
// Barcode success code
}
~~~
### 說明:
當獲取二維碼識別成功時的回調函數,用于返回識別成功的數據。
### 參數:
- type: *( Number ) 必選 *識別到的二維碼類型
Number類型的值,與Barcode對象定義的二維碼類型常量一致。
- code: *( DOMString ) 必選 *識別到的二維碼數據
從二維碼圖片中掃描出的數據內容,字符串采用UTF8編碼格式。
- file: *( DOMString ) 可選 *識別到的二維碼圖片文件路徑
識別到的二維碼數據圖片,為png格式文件,為設置為不保存圖片,則返回undefined。
### 返回值:
void : 無
# [BarcodeErrorCallback]()
二維碼識別錯誤的回調函數
~~~
void BarcodeErrorCallback( error ) {
// Handle error
}
~~~
### 參數:
- error: *( DOMException ) 必選 *二維碼識別的錯誤信息
### 返回值:
void : 無
- API參考
- Accelerometer
- Audio
- Camera
- Contacts
- Device
- Downloader
- Events
- Gallery
- Geolocation
- IO
- Key
- Messaging
- NativeUI
- Navigator
- Orientation
- Proximity
- SplashScreen
- Storage
- UI
- Uploader
- InterfaceOrientation
- Runtime
- WebView
- XMLHttpRequest
- Zip
- Plugins
- Barcode
- Maps
- Payment
- Push
- Share
- Speech
- Statistic
- Native.js
- Android
- iOS