2014-04-01 1 views
2

나는 phonegap과 android devices를 대상으로 sencha touch 응용 프로그램을 개발 중입니다. 앱에는 바코드를 스캔하는 옵션이 있습니다. 나는 바코드 스캔을 구현하기 위해 this link을 사용했다. 여기서 사용자는 바코드를 스캔하여 다시 창가 화면으로 돌아갈 수 있습니다.phonegap barcodescanner : 한 번에 여러 번 스캔하는 방법

내 요구 사항에 따라 앱에서 사용자가 한 번에 둘 이상의 바코드를 스캔 할 수 있어야하며 사용자가 스캔을 마쳤을 때 화면으로 돌아와야합니다. 나는 phonegap 캡처 플러그인이 사용되는 유사한 접근 방식을 기대하고있다 (사용자가 동시에 여러 이미지/비디오/사운드를 가져 와서 결과를 배열로 볼 수있다).

동시에 여러 번 검사 할 수있는 방법이 있습니까?

답변

1

플러그인은 현재이 기능을 지원하지 않습니다. 플러그인 작성자에게 연락하여 수정하거나 직접 처리해야합니다.

3

방금 ​​같은 문제에 직면했습니다. 여기에 제가 생각해 낸 해결 방법이 있습니다.

요약하면 : 코드가 성공적으로 반환 될 때마다 검색된 정보를 배열에 저장하고 즉시 검색을 다시 시작합니다.

내가 간단한 유성 응용 프로그램 내에서 내 해결 방법을 테스트하는 데 사용하는 코드입니다 : 그것은 위의 80prozet 솔루션 @ 사용하여 근무하고있다

// 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); 
      } 
    ); 
    } 
    }); 
0

, 당신은 기본 뒤로 버튼을 사용하여 스캔을 취소 고려해야합니다 :

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); 
}