2011-03-02 34 views
1

在Android中,使用ZXing,我们可以通过手机摄像头扫描QR码并对其进行解码。在Android应用程序中解码QR码?

但是,在我的情况下,QR码图像存储在手机本身,我需要解码它。

有没有办法以这种方式解码QR码?

+0

我可能建议Google搜索?我很确定那里有图书馆。 – 2011-03-02 18:00:17

+1

有库可通过相机扫描QR码。但我的要求有点不同。 – Veera 2011-03-02 18:06:10

+0

Veera,您可以使用ZXing代码从位图执行此操作,而不是根据我的答案执行相机操作。 – 2011-03-02 18:48:24

回答

3

您可以使用ZXing代码。

结账DecodeHandler.java

+0

captureActivity从相机捕获QR码图像,解码后会根据QR码中存储的数据类型显示结果。例如如果网站URL使用QR码编码,结果屏幕将会有一个按钮来打开该URL和likevise。 我需要从SD卡读取图像,对它进行解码并以相同的方式处理输出zxing在通过captureActivity解码的情况下。 在“结果结果”中输出结果后需要做什么? – 2012-03-28 12:33:36

+0

@CoolZeroInfinity你完成了吗?你能分享吗? – Erum 2015-01-27 12:22:53

1

您可以简单地使用Mobile Vision API解码来自Image的QR码。它非常准确,可以在图像上检测多个Qr码。

你必须包括以下库序使用移动愿景API:

编译“com.google.android.gms:发挥服务视觉:9.6.1”

BarcodeDetector detector = 
       new BarcodeDetector.Builder(context) 
         .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE) 
         .build(); 
     if(!detector.isOperational()){ 
      Log.d("QR_READ","Could not set up the detector!"); 
     } 
     Frame frame = new Frame.Builder().setBitmap(bitmap).build(); 
     SparseArray<Barcode> barcodes = detector.detect(frame); 
      Log.d("QR_READ","-barcodeLength-"+barcodes.size()); 
      Barcode thisCode=null; 
      if(barcodes.size()==0){ 
       Log.d("QR_VALUE","--NODATA"); 
      } 
      else if(barcodes.size()==1){ 
       thisCode = barcodes.valueAt(0); 
       Log.d("QR_VALUE","--"+thisCode.rawValue); 
      } 
      else{ 
       for(int iter=0;iter<barcodes.size();iter++) { 
        thisCode = barcodes.valueAt(iter); 
        Log.d("QR_VALUE","--"+thisCode.rawValue); 
       } 
      }