2011-03-02 35 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); 
       } 
      }