我对ZXing很新,并一直在探索他们的API。 我看过Using ZXing to create an android barcode scanning app和getting scan result when using zxing?
据我所知,扫描结果的详细信息在字符串“contents”中。我如何提取细节?查看QR生成器,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
}
}
}
答案 0 :(得分:2)
我已经成功提取了它。扫描结果位于字符串'contents'中。让我们说你扫描了一个名称和ID的代码。该字符串将包含由空格分隔的“name”“id”。您可以使用for循环来处理它。
答案 1 :(得分:1)
我如何提取这些细节?
QR码只是图片形式的文件。正如您需要知道文件格式才能使用它之前,您需要先知道QR码内容的格式才能使用它。
This ZXing Wiki page包含有关他们所见过的QR码内容类型的信息。
答案 2 :(得分: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
答案 3 :(得分:0)
首先检查字符串的开头,例如,如果它与“vcard”一起开始(“xyxy”)。小心! “vcard”不是正确的字符串!
如果它是一个vCard,我曾经把它拆分成零件。
String[] vCardContent = content.split("\n");
下一步是检查每个部分是否从例如“N:”别名“姓名”