如何在zxing中触发批量模式扫描

时间:2013-04-09 02:49:02

标签: android zxing

我读到有一个键可以在zxing中启用批量模式扫描。我可以知道如何在Android应用程序中启用此密钥吗?

我目前正在使用此类代码单独扫描条形码:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_FORMATS", "PRODUCT_MODE,CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF");

startActivityForResult(intent, 0); // start the scan

谢谢!

1 个答案:

答案 0 :(得分:6)

没有"批量模式的概念"在zxing内我不会想。

您可以使用zxing在您自己的应用程序中实现您正在寻找的行为。使用您在问题中已有的代码首次启动扫描。将此声明添加到您的班级:

ArrayList<String> results;

然后在之前将其添加到onCreate 中,开始扫描以初始化它:

results = new ArrayList<String>();

在onActivityResult()中,您可以将当前结果添加到ArrayList,然后开始下一次扫描。

/*Here is where we come back after the Barcode Scanner is done*/
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            // contents contains whatever the code was
            String contents = intent.getStringExtra("SCAN_RESULT");

            // Format contains the type of code i.e. UPC, EAN, QRCode etc...
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

            // Handle successful scan. In this example add contents to ArrayList
            results.add(contents);

            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_FORMATS", "PRODUCT_MODE,CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF");
            startActivityForResult(intent, 0); // start the next scan
        } else if (resultCode == RESULT_CANCELED) {
            // User hass pressed 'back' instead of scanning. They are done.
            saveToCSV(results);
            //do whatever else you want.
        }
    }
}

将它们保存为CSV文件超出了此特定问题的范围,但如果您环顾四周,可以找到如何执行此操作的示例。考虑将其作为练习留空,以便您学习。