2011-06-29 107 views
8

我喜欢解码QR码直接在我的应用程序中,我不会将我的应用程序重定向到其他意图。我非常努力地找到任何API或库,从中我可以解码QR码,但我没有成功。如何解码QR码

任何人有任何想法如何解码我的应用程序或库文件中的QR码,我可以解码QR码。

+2

这里是有公认的答案类似的问题:http://stackoverflow.com/questions/5171294/decoding-a-qr-code-in-an-android-application – Mudassir

回答

13

Zxing是QR码的优秀库。你会发现你需要的东西,包括一个android示例项目。

6

这里是一个例子,我如何设法使用Zxing库在Android中解码一维条码和二维QR码。

QR DECODE

 Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
    startActivityForResult(intent, REQUEST_BARCODE); 

    Toast toast = Toast.makeText(this, "Start scanning QR code", Toast.LENGTH_SHORT); 
    toast.show(); 

BARCODE DECODE

 Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 
    startActivityForResult(intent, REQUEST_BARCODE); 

    Toast toast = Toast.makeText(this, "Start scanning Barcode", Toast.LENGTH_SHORT); 
    toast.show(); 

此代码是在Android三星Galaxy S工作(2.2版)。 如果你想检查不同的扫描方式检查此链接: Zxing Intents.java

问候

+0

REQUEST_BARCODE变量的值是什么?只有这3行能够扫描条形码或任何额外的课程要求?在我的代码中,我得到一个没有活动发现异常? –

+0

private static final int REQUEST_BARCODE = 0; 您是否在AndroidManifest.xml中包含了该活动? – Iker

0
static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN"; 


// Bar Code 

public void scanBarCode(View v) { 

     try { 
      //start the scanning activity from the com.google.zxing.client.android.SCAN intent 

      Intent intent = new Intent(ACTION_SCAN); 

      intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 

      startActivityForResult(intent, 0); 

     } catch (ActivityNotFoundException anfe) { 

      //on catch, show the download dialog 

      showDialog(AndroidBarcodeQrExample.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show(); 
     } 
    } 


// QR Code 

    public void scanQR(View v) { 

     try { 

      //start the scanning activity from the com.google.zxing.client.android.SCAN intent 

      Intent intent = new Intent(ACTION_SCAN); 

      intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 

      startActivityForResult(intent, 0); 

     } catch (ActivityNotFoundException anfe) { 

      //on catch, show the download dialog 

      showDialog(AndroidBarcodeQrExample.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show(); 
     } 
    } 
4

您现在可以使用新的Android Mobile Vision API

这里面BarcodeDetector是一个例子https://github.com/Gnzlt/AndroidVisionQRReader

+1

谢谢!有关使用第三方库的很多答案。令人惊讶的是很难找到一种原生的方式来做到这一点。你能告诉我从这个支持哪个API级别?我的应用程序使用API​​ 17:Android 4.2(Jelly Bean)。我仍然可以使用视觉API吗? – Isuru

+0

当然你可以!幸运的是它基于Google Play服务,所以即使使用API​​ 9(姜饼)也可以使用它。 – Gonzalo

+0

真棒。谢谢! – Isuru