天天看點

架構學習八:二維碼(Zxing)

本文轉自夏神:http://blog.csdn.net/xiaanming/article/details/10163203

一、用什麼

二維碼掃描用的google的開源架構Zxing。

二、下載下傳

位址:http://code.google.com/p/zxing/。

http://download.csdn.net/download/xiaanming/5990219

三、怎麼用

記得要加相機權限。

1、拷貝三個包到自己項目中,并将相關資源引入:com.mining.app.zxing.camera,com.mining.app.zxing.decoding,com.mining.app.zxing.view。

2、導入Zxing.jar包。

3、引入類:MipcaActivityCapture。這個activity主要處理掃描界面的類,比如掃描成功有聲音和震動等等,主要關注裡面的handleDecode(Result result, Bitmap barcode)。掃描完成之後将掃描到的結果和二維碼的bitmap當作參數傳遞到handleDecode(Result result, Bitmap barcode),隻需在這兒寫出相對應的處理代碼即可。

4、自定義效果

1)更改掃描框的大小:在CameraManager類裡的getFramingRect()。我自己更改後的一個:

public Rect getFramingRect() {
    Point screenResolution = configManager.getScreenResolution();
    if (framingRect == null) {
      if (camera == null) {
        return null;
      }
      int width = screenResolution.x;
      
      int height = screenResolution.y * 1 / 2;
      
      int leftOffset = (screenResolution.x - width) / 2;
      int topOffset = (screenResolution.y - height) / 2;
      framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
      Log.d(TAG, "Calculated framing rect: " + framingRect);
    }
    return framingRect;
}
           

2)更改掃描框的樣式:在ViewFinderView類中修改。

更改掃描框大小後,更改掃描框下方的文字位置,使得其居中顯示:

paint.setTextAlign(Align.CENTER);
canvas.drawText(getResources().getString(R.string.scan_text), width/2, (float) (frame.bottom + (float)TEXT_PADDING_TOP *density), paint);
           
四、需要掃描本地圖檔

本機掃描本機圖檔,參考夏神:http://blog.csdn.net/xiaanming/article/details/14450809

五、遇到的問題

raw檔案夾送出不了svn,錯誤提示是:

架構學習八:二維碼(Zxing)

我怎麼解決的:删了raw檔案夾,然後再重新建立,再将該檔案夾下東西拷貝進來,再次送出svn。