最近在開發PDA項目,使用angular7+ionic4+cordova項目,需要支持掃碼一維碼(條碼)和二維碼,於是我選擇QR scanner掃碼插件。令人頭大的問題出現了,qr scanner能識別出二維碼,但是一維碼無法識別。。。。。。後來發現配置一下編碼格式可以解決這個問題。
1.QR Scanner版本 3.0.1
找到文件 plugins\cordova-plugin-qrscanner\src\android\QRScanner.java
找到文件裏 setupCamera 方法,添加以下代碼,如圖:
//Configure the decoder
ArrayList<BarcodeFormat> formatList = new ArrayList<BarcodeFormat>();
formatList.add(BarcodeFormat.QR_CODE);
formatList.add(BarcodeFormat.UPC_A); // UPC標準碼(通用商品)
formatList.add(BarcodeFormat.UPC_E); // UPC縮短碼(商品短碼)
formatList.add(BarcodeFormat.EAN_13);
formatList.add(BarcodeFormat.EAN_8);
formatList.add(BarcodeFormat.CODE_39);
formatList.add(BarcodeFormat.CODE_93);
formatList.add(BarcodeFormat.CODE_128);
formatList.add(BarcodeFormat.ITF);
formatList.add(BarcodeFormat.DATA_MATRIX);
配置完成之後重新構建項目,打包測試,完成一維碼識別功能。
2.番外(●'◡'●)
項目使用的時Lodop打印工具生成的一維碼,Lodpop條碼ADD_PRINT_BARCODE(Top, Left,Width, Height, CodeType, CodeValue)配置,CodeType (條碼類型)目前支持:
128A,128B,128C,EAN8,EAN13,EAN128A,EAN128B,EAN128C,Code39,
39Extended,2_5interleaved,2_5industrial,2_5matrix,UPC_A,UPC_E0,UPC_E1,UPCsupp2,UPCsupp5,Code93,93Extended,MSI,PostNet,Codaba,QRCode
項目中選用了128A,生成條碼後,條碼過小會影響識別的準確度,打印出來之後能正確識別,當時以爲是個bug,調試了很久。。。