3

我对 ZXing 比较陌生,一直在探索他们的 API。我见过使用 ZXing 创建一个 android 条码扫描应用程序在使用 zxing 时获得扫描结果?

我了解扫描结果的详细信息在字符串“contents”中。如何提取详细信息?查看二维码生成器, http: //zxing.appspot.com/generator/有很多字段,如姓名、公司和电话号码。我如何提取这些细节?

我需要类似的东西

//String extractedName = contents.getName() 

对不起,我对此很陌生。如果有人可以为我提供详细的步骤,我将不胜感激。谢谢。

测试活动

public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
    IntentIntegrator.initiateScan(MenuActivity.this);
}
};


public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
    if (resultCode == RESULT_OK) {
        String contents = intent.getStringExtra("SCAN_RESULT");
        String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
        // Handle successful scan
        //How to get name from contents?

    } else if (resultCode == RESULT_CANCELED) {
        // Handle cancel
    }
}
}
4

4 回答 4

2

我已经成功提取了它。扫描结果在字符串“内容”内。假设您扫描了带有名称和 ID 的代码。该字符串将包含由空格分隔的“名称”“id”。您可以使用 for 循环来处理它。

于 2011-08-30T18:25:37.293 回答
1

我如何提取这些细节?

二维码就是图片形式的文件。正如您需要知道文件的格式才能使用它一样,您需要知道 QR 码内容的格式才能使用它。

这个ZXing Wiki页面有关于他们看到的二维码内容类型的信息。

于 2011-06-04T22:47:59.483 回答
1

在 IntentIntegrator 中创建对象

protected void onCreate(Bundle savedInstanceState) { <br>
        super.onCreate(savedInstanceState);<br>
        setContentView(R.layout.activity_main);<br>
        new IntentIntegrator(this).initiateScan();<br>
    }

覆盖 onActivityResult 方法

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { <br>
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);<br>
        if (scanResult != null) {<br>
            TextView t = (TextView) findViewById(R.id.textView2);<br>
            String data[] =scanResult.getContents().split("\n");<br>
            for(String k:data){<br>
                t.append(k+"\n");<br>
            }<br>
        }<br>

        // else continue with any other code you need in the method

    }

在此我使用 getContents 方法获取数据并拆分该数据行。然后将该数据应用到 textview2

于 2015-09-28T17:54:00.647 回答
0

首先检查字符串的开头,例如它是否像“vcard”一样startsWith(“xyxy”)。当心!“vcard”不是正确的字符串!

如果它是 vCard,我曾经将其拆分为多个部分。

String[] vCardContent = content.split("\n");

下一步是检查每个部分是否以例如“N:”别名“名称”开头

于 2011-10-05T07:15:29.023 回答