сканер штрих-кодов phonegap: как выполнять многократное сканирование за раз

Я разрабатываю сенсорное приложение sencha с телефонной связью и таргетингом на устройства Android. В приложении есть возможность сканировать штрих-код. Я использовал эту ссылку для реализации сканирования штрих-кода. Здесь пользователь может отсканировать штрих-код и вернуться на экран сенчи.

Согласно моему требованию, приложение должно позволять пользователям сканировать более одного штрих-кода за раз, и оно должно возвращаться на экран, когда пользователь закончит сканирование. Я ожидаю аналогичный подход к использованию плагина захвата телефонной связи (позволяет пользователю одновременно снимать несколько изображений/видео/звука, и результат будет в массиве).

Есть ли способ сделать это многократное сканирование одновременно.


person Sridhar Boganathan    schedule 01.04.2014    source источник


Ответы (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);
          }
      );
    }
  });
person 80prozent    schedule 19.11.2015
comment
Это не работает. Сканер никогда не перезапускается, он просто закрывается после сканирования одного элемента. Я скопировал и протестировал точно такой же код в этом ответе. - person Zac1; 22.02.2020
comment
у меня нет никакого проекта, чтобы проверить это прямо сейчас. Вы делали какую-либо отладку, почему это не удалось для вас? первое сканирование прошло успешно? чем это дает вам ошибку от сканера штрих-кода? если первое сканирование прошло успешно, он должен попытаться снова открыть сканер штрих-кода. если этого не происходит, похоже, что-то изменилось в сканере штрих-кода.... - person 80prozent; 27.02.2020

Плагин в настоящее время не поддерживает эту функцию. Вам придется либо связаться с автором плагина для внесения изменений, либо сделать это самостоятельно.

person Jens Neubauer    schedule 06.05.2014

Это сработало с использованием решения @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);
}
person Sboniso Marcus Nzimande    schedule 13.07.2017