phonegap barcodescanner:如何一次多次扫描

时间:2014-04-01 09:22:36

标签: cordova phonegap-plugins barcode-scanner

我正在开发一个带有phonegap的sencha touch应用程序,并针对Android设备进行定位。在应用程序中,可以选择扫描条形码。我使用this link来实现条形码扫描。在这里,用户可以扫描条形码并返回到sencha屏幕。

根据我的要求,应用程序应该允许用户一次扫描多个条形码,并且当用户完成扫描时它应该返回到屏幕。我期待使用phonegap捕获插件的类似方法(允许用户同时拍摄多个图像/视频/声音,结果将在数组中)。

是否可以同时进行多次扫描。

3 个答案:

答案 0 :(得分:3)

我刚遇到同样的问题,这是我提出的解决方法。

简而言之:无论何时成功返回代码,我都会将扫描的信息保存到阵列中,并立即重新开始扫描。

这是我用来在简单的流星应用程序中测试我的解决方法的代码:

  // list to collect successfully scans
  var scanned_list=[];

  // callback function that will be executed everytime barcodescanner.scan ends without error
  scannedOneItem = function (result) {

    // user cancelled the scan: now check if we have something scanned already or not:
    if(result.cancelled){
      if(scanned_list.length>0){
        // no items scanned, user cancelled
        alert("Scanned items: " + scanned_list.length);
      }
      else{
        alert("Scanned canceled");
      }
    }
    // a item was scanned successfully - add it to list, and restart barcodescanner
    else{
      scanned_list.append(result.text);
      cordova.plugins.barcodeScanner.scan(
          scannedOneItem,
          function (error) {
            alert("Scanning failed: " + error);
          }
      );
    }
  }
  Template.barcode_scanner.events({
    'click button': function () {
      // start scanning when button is pressed:
      cordova.plugins.barcodeScanner.scan(
          scannedOneItem,
          function (error) {
            alert("Scanning failed: " + error);
          }
      );
    }
  });

答案 1 :(得分:1)

该插件目前不支持此功能。您必须联系插件的作者进行修改或自己动手。

答案 2 :(得分:0)

它使用上面的@80prozet解决方案,您必须考虑使用本机后退按钮取消扫描:

async scan_products (){
    const results           = await this.barcode.scan();

    if(results.cancelled) {
        this.platform.ready().then(() => {
            // catch the native back button to cancel scan
            this.platform.registerBackButtonAction(function(event){
                event.preventDefault();
                event.stopPropagation();

                console.log("Scanned Canceled");
            });
        });
    }
    // a item was scanned successfully - add it to list, and restart barcodescanner //
    else{
        this.scanned_products.push(results.text);
        this.scan_products();
    }


    console.log(results);
}