如何解析QR扫描Zbar android的结果?

问题描述:

我使用Zbar库进行QR扫描。 我尝试解析此扫描的结果,但我失去了一些信息。对于解析我使用this library如何解析QR扫描Zbar android的结果?

其他库是否可以解析handleResult(Result rawResult) rawResult?

这是我的代码: @Override

public void handleResult(final Result rawResult) { 

    Log.v("myLog", rawResult.getContents()); // Prints scan results 
    Log.v("myLog", rawResult.getBarcodeFormat().getName()); // Prints the scan format (qrcode, pdf417 etc.) 

    unswer = rawResult.getContents(); 

    if (unswer.contains("VCARD")){ 

      final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Содержимое"); 
      builder.setMessage(unswer = rawResult.getContents()); 
      builder.setPositiveButton("Добавить контакт", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 

       String parseVcard = unswer; 
       VCard vCard = VCardParser.parse(parseVcard); 

       String name = vCard.getName(); 
       String fname = vCard.getFormattedName(); 
       Log.d("myLog", name + " " + fname); 
       addContact(fname + " " + name); 

       } 
      }); 
      builder.setNegativeButton("Отмена", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       mScannerView.resumeCameraPreview(SimpleScannerActivity.this); 
      } 
      }); 

      AlertDialog alertDialog = builder.create(); 
      alertDialog.show(); 


    } 
+0

您可以分享您试图解析的原始结果吗? –

+0

这是结果:BEGIN:VCARD N:BB; AA ORG:ER TITLE:DDB TEL:35255 URL:TER 注:BFREF END:VCARD当我使用 字符串名称= vCard.getName( );我输了“AA” – Dem

+0

但是名字有AA和BB。 vCard.getFormattedName(); - 给我null – Dem

vCard.getFormattedName()不会回报你一个值,因为你的rawResult不包含“FN”值。当您查看您发送的值时,它只包含“N”,这意味着您只能使用价值vCard.getName();

+0

好的。但为什么它只包含一半呢?当我使用vCard.getName()结果必须包含N:BB; AA - > BB和AA,但它只包含BB – Dem

+0

我试过一个在线解析器,并且能够获得BB; AA。您还应该尝试使用不同的解析器https://github.com/mangstadt/ez-vcard –