2011-06-04 109 views
3

提取结果我是相当新的斑马线,并一直在探索自己的API。 我看过Using ZXing to create an android barcode scanning appgetting scan result when using zxing?从Android的斑马线IntentIntegrator

我知道扫描结果的详细信息是在字符串“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 
    } 
} 
} 

回答

2

我已经成功提取它。扫描结果位于字符串“内容”中。比方说,你扫描的代码名称和ID。该字符串将包含“姓名”,“身份证”由一个空格隔开。你可以使用for循环来处理它。

1

我如何提取这些细节?

QR代码就是一个图片形式的文件。正如你需要知道文件的格式,然后才能使用它,你需要知道的QR码的内容的格式,然后才能使用它。

This ZXing Wiki page有关于他们所看到的类型的QR码内容的信息。

+1

特别是使用http://code.google.com/p/zxing/source/browse/trunk/core/src/com/google/zxing/client/result/ResultParser.java从项目中将原始内容解析为结构化对象。 – 2011-06-05 08:32:23

+0

有人请帮我解决这个问题。 – ZXingIT 2011-06-12 18:26:38

0

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

如果它是我用来将其拆分为零件的电子名片。

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

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

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