2013年5月3日 星期五

Android - 掃瞄1維/2維(1D/2D)條碼 QR Code - 修改ZXing Source 2014-03-30 Updated.

 

ZXing是使用Java開發的Open Source專案,主要目的是用來進行1D/2D的條碼掃瞄,支援的格式如下:

  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • Code 39
  • Code 93
  • Code 128
  • ITF
  • Codabar
  • RSS-14 (all variants)
  • RSS Expanded (most variants)
  • QR Code
  • Data Matrix
  • Aztec ('beta' quality) 
  • PDF 417 ('alpha' quality)

官方原始碼及測試資料下載點

GitHub Project:
 
jar檔下載點
http://repo1.maven.org/maven2/com/google/zxing/

因為在測試的ZXing過程中,發現程式會直接呼叫ZXing Barcode Scanner程式中的Activity,為了不需額外安裝ZXing Barcode Scanner程式,則本人將專案修改成不需要安裝ZXing Barcode Scanner的版本,說明如下:


ZXing-2.3.1.zip下載點 經修正後,該版本可以使用在API 11(3.0) ~ API 19(4.4.2) 

  • Bug fix - 該版本修正第一次啟動會失敗的問題.
  • 該版本將所有元件整合為一個專案, 並精簡到只剩掃瞄與產出條碼功能.
  • ZXing 2.3.0版本只支持Android 4.0以後的版本, 但本人修正到支持Android 3.0, 但不再支持Android 2.x!
  1. Eclipse中匯入ZXing-2.3.1/ZXingLibs.zip壓縮檔裡的專案。
  2. Android專案按右鍵選Properties => 點選Android => 對下方的Library區塊點選Add => 選擇剛匯入的ZXingLibs專案引用。
  3. 請先確保您的Android專案已經有引用Android Support Library(android-support-v4.jar), 如遇Android Support Library版本衝突, 請統一Android Support Library版本即可!
  4. ZXing-2.3.1/AndroidManifest.xmlAndroidManifest.xml中的設定資訊, 目前只剩下掃瞄與產出條碼功能, 如需其他功能請自行使用官方原始專案! 
  5. 掃瞄呼叫方式如ZXing-2.3.1/Main.java檔。
  6. ZXing-2.3.1/EncodeAct.java檔為如何編碼的範例。

轉貼請註明出處,最好直接使用聯結轉貼! Thanks~
作者: Samuel - 林靖傑
Bloghttp://sabaothtech.blogspot.tw/
日期:2014/03/30 Updated.

17 則留言:

  1. 不好意思,我想請問一下
    產生QrCode這部分
    在encodeBarcode完都會跳到EncodeActivity
    如果我想使用類似startActivityForResult這種方式
    把encode完的QrCode圖像直接顯示在畫面中該怎麼做?
    我之前是使用EncodingHandler.createQRCode直接得到Bitmap
    可是版大似乎把他寫到jar檔裡,不知道該從何改起
    希望您能幫幫忙~_~

    回覆刪除
    回覆
    1. 不好意思,我直接貼上您給我的檔案內容
      發現QRCodeEncoder這個似乎並沒有在Lib裡面...

      刪除
    2. 已更新jar檔, 版本號為2.1.2, 並且更新文章,
      範例在ZXing-2.1.2/demo/EncodeAct.java檔!

      您可以直接修改ZXing的Android原始檔, 以更符合您的需求!

      PS. 看作者寫的原始檔, 感覺越來越不願意使用者直接存取!

      刪除
  2. 不好意思我想請問一下,在讀取QRcode部分,Main.java 裡面有段程式碼都是無法動作的呈現紅色虛線,
    setContentView(R.layout.main);
    txtScanResult = (TextView) findViewById(R.id.scan_result);
    View btnScan = findViewById(R.id.scan_button);

    R._的部分都會呈現紅色虛線,我有按照大大的步驟,也匯入JAR了,不知問題出在哪,我是否要再自行新增XML 並取名該ID解決?

    回覆刪除
    回覆
    1. 控制項是你自己決定的!

      刪除
    2. R._ 那邊呈現紅色虛線,因此我將它create 然後仍出問題,不知其他人是否也有同樣狀況。

      刪除
  3. 請問一下 這個是可以寫出掃描QR Code的程式嗎
    因為最近要撰寫掃描QR Code的程式 但是一直找不到方法
    對手機程式也比較不了解 希望可以多多指點小弟一下 謝謝 ...

    回覆刪除
  4. 太棒了~~剛好正在找這lib, 可是發現實在太大包了
    好險大大有提供減肥版~~
    感謝阿~~

    回覆刪除
  5. 太棒了
    我使用Android Studio
    import module 後再引用他,就可以呼叫了
    只是相機會發生反向的問題
    所以把呼叫的那一個activity給轉橫向就解決了

    Scanner 框要在哪裡做修改??
    他跑到最下面去了

    回覆刪除
  6. 作者已經移除這則留言。

    回覆刪除
  7. 上述的步驟都做了
    但有遇到一些問題想請教
    就是我打開程式 點擊按鈕要進行掃描的時候 程式就會關閉
    另外就是 他是不是會把APP的名稱直接改成 條碼掃描器

    回覆刪除
    回覆
    1. ZXing-2.3.1/EncodeAct.java檔為如何編碼的範例。

      刪除
  8. 您好,上面的2.3.1的連結已失效,能否再提供載點呢? 謝謝

    回覆刪除
  9. 無法下載了,可否再提供下載,感謝!

    回覆刪除