【问题标题】:Zxing Compare Result against local Data?Zxing 将结果与本地数据进行比较?
【发布时间】:2017-11-22 02:14:06
【问题描述】:
@Override
public void onActivityResult ( int requestCode, int resultCode, Intent data){
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (result != null) {
        if (result.getContents() == null) {
            Log.d("MainActivity", "Cancelled");
            Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
        } else {
            Log.d("MainActivity", "Scanned");
            Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

目前的工作方法没有与数据比较^

下面是 Result 与 Data 比较的方法,看看是否有重复(不工作)

@Override
public void onActivityResult ( int requestCode, int resultCode, Intent data){
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (result != null) {
        if (result.getContents() == 555821282,8882288,888822884,1145698,248635887,4477996) {
            Log.d("MainActivity", "Yes");
            Toast.makeText(this, "Yes", Toast.LENGTH_LONG).show();
        } else {
            Log.d("MainActivity", "No");
            Toast.makeText(this, "No: " + result.getContents(), Toast.LENGTH_LONG).show();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

我得到整数太大。我有 500 个 UPC 可以放在那里,但我什至不能放一个。我可以将数字放在 Android Studio 的某个文件中并在那里引用吗?有什么办法可以解决这个问题?

【问题讨论】:

    标签: java arrays zxing barcode-scanner


    【解决方案1】:

    IntentResut.getContents() 返回一个字符串。要在 Java 中比较两个字符串,您应该使用 String.equals(String) 方法。你的onActivityResult 应该是这样的

    @Override
    public void onActivityResult ( int requestCode, int resultCode, Intent data){
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            String data = result.getContents();
            if (data != null) {
                if (data.equals("555821282") 
                        || data.equals("8882288")
                        || data.equals("888822884")
                        /* ... rest of the options ... */ ) {
                    Log.d("MainActivity", "Yes");
                    Toast.makeText(this, "Yes", Toast.LENGTH_LONG).show();
                } else {
                    Log.d("MainActivity", "No");
                    Toast.makeText(this, "No: " + result.getContents(), Toast.LENGTH_LONG).show();
                }
            } else {
                // No data
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    

    由于要比较 500 个 UPC,您可能不想编写 500 行的 if 语句。相反,我建议将所有 UPC(作为字符串)放入列表中,然后您的 if 语句可以检查列表是否包含条形码。

    List<String> knownUpcs = Arrays.asList("555821282", "8882288", "888822884", "1145698", "248635887", "4477996");
    ...
    if (knownUpcs.contains(data)) {
        // do your thing
    }
    

    这里的列表是静态定义的,但没有理由不能通过从磁盘上的文件中读取 UPC 来创建列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      相关资源
      最近更新 更多