我是发展中地区的新人。我正在尝试在扫描QR图像后处理结果。我正在使用Zxing库。现在只有内容字符串可以检索任何数据。但我想扫描一个qr图像来获取URL,telno和一个字符串/文本(这将是一个编号的数量)。 你能用一个例子来说明如何获取telno和text的数据并存储在字符串中。目前只有一个存储在内容中的SCAN_RESULT,但是如何从一个QR码一次获得多个结果。
private void onQrActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
Log.d(TAG, "onActivityResult " + resultCode);
String contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
paymentmsg.setText(contents);
value_Qr = Float.parseFloat(contents);
// Toast.makeText(this, format, Toast.LENGTH_SHORT).show();
format = data.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
}
else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
答案 0 :(得分:1)
您必须解析结果。结果在内容字符串中。解析内容字符串。 如果您的qr代码是联系
if(contents.startsWith("BEGIN:")){
String[] tokens = contents.split("\n");
for (int i = 0; i < tokens.length; i++)
{
System.out.println(" "+tokens[i]);
if(tokens[i].startsWith("BEGIN:"))
{
Type= tokens[i].substring(6);
}
else if(tokens[i].startsWith("N:"))
{
Name= tokens[i].substring(2);
}
else if(tokens[i].startsWith("ORG:"))
{
Org= tokens[i].substring(4);
}
else if(tokens[i].startsWith("TEL:"))
{
Tel= tokens[i].substring(4);
}
else if(tokens[i].startsWith("URL:"))
{
Url= tokens[i].substring(4);
}
else if(tokens[i].startsWith("EMAIL:"))
{
Email= tokens[i].substring(6);
}
else if(tokens[i].startsWith("ADR:"))
{
Adr= tokens[i].substring(4);
}
else if(tokens[i].startsWith("NOTE:"))
{
Note= tokens[i].substring(5);
}
}
如果你的qr scannrd是url
else if(contents.startsWith("http://")||(contents.startsWith("www."))){
qr_url= contents;
如果你扫描的qr是位置qr
else if(contents.startsWith("geo:")){
String delims = "[ , ?q= ]+";
String[] tokens = contents.split(delims);
for (int i = 0; i < tokens.length; i++)
{
System.out.println(" "+tokens[i]);
if(tokens[i].startsWith(" geo:"))
{
qr_latitude= tokens[i].substring(4);
}
}
qr_latitude= tokens[0].substring(4);
qr_longitude=tokens[1];
geo_place=tokens[2];
依此类推你可以解析结果。它的全部内容都是关于如何解析字符串的。
答案 1 :(得分:0)
当然,一个QR码意味着一个扫描结果。你得到了字符串,原始字节和一些其他元数据。如果要将字符串解析为组件,则必须自己完成,但可以在应用程序中重复使用ResultParser
中的core/
类来轻松完成。
答案 2 :(得分:0)
我认为以下代码可以帮助您:
ParsedResult tmpParseVcard = ResultParser.parseResult(result.getResult());
AddressBookParsedResult vcardParsedResult = (AddressBookParsedResult) tmpParseVcard;
Toast.makeText(MainActivity.this, "VCARD" + Arrays.toString(vcardParsedResult.getPhoneNumbers()), Toast.LENGTH_SHORT).show();
Log.e("Phone number", Arrays.toString(vcardParsedResult.getPhoneNumbers()));
Log.e("Phone Type", Arrays.toString(vcardParsedResult.getPhoneTypes()));
// AddressBookParsedResult - vcard // SMSParsedResult - 短信...等