2011-05-17 128 views
1

我遵循了每個指令,維基,入門指南,幫助, 等我可以找到有關ZXing項目。 經過很多次的調試,我終於使用nt core.jar,javame.jar和javese.jar進行編譯。 我想將ZXing集成到我的代碼中,即我想掃描 \讀取條形碼並處理其數據。讓ZXing工作

我已經導入了上面提到的每個文件的外部jar。然後 我轉向https://code.google.com/p/zxing/wiki/DeveloperNotes使用 MultiFormatReader()。 BufferedImage類無法解析。我嘗試了任何我知道的 ,我甚至嘗試了Android的位圖解決方法,但它也沒有幫助 我。

我知道我可以使用意圖讀取\掃描條碼,但我希望 自己處理它,而不是安裝「第三方」應用程序。

任何人都可以請幫我理解我該怎麼做? 幾行代碼將不勝感激。

而且,我只想掃描\讀取條形碼並分析其數據。

回答

0

這裏是我做了我的實驗性應用:

  • 下載Android版本斑馬線條形碼掃描器(here
  • 轉換該項目爲Android Library
  • 刪除我並不需要的所有功能
  • 修改CaptureActivity我想要的方式,所以它更好地與我的應用程序集成。

我發現這種方式比較容易,因爲Android在跨不同設備的統一攝像頭支持方面存在一些問題,ZXing的傢伙已經照顧過它。

+0

感謝您的快速回答。我下載了整個項目。我可以從中提取庫(/ android /),但是我應該如何處理這些文件?將它們複製到我的項目中? – 2011-05-17 11:04:07

+0

剛纔我瞭解你。我從源創建了一個新的android項目,並將它重定向到zxing的/ andoroid /目錄。但我得到太多的錯誤。這裏是截圖http://i52.tinypic.com/16gcwav.png – 2011-05-17 11:12:28

+0

有沒有辦法,我可以猜測你的問題是由該截圖:)請發佈編譯錯誤日誌。 – inazaruk 2011-05-17 15:03:13

5

最簡單的答案是,你不應該在Android應用中使用javase.jar。它是用於JavaSE的代碼。並非所有JavaSE類都在Android中。特別是Android沒有像BufferedImage這樣的AWT類。

您只想在項目中包含core.jar。然後使用它編寫你的Android應用程序。

+0

肖恩謝謝你的迴應,並分享你的實施。但它似乎並不奏效,而且你還沒有告訴我一些新的東西。我熟悉BufferedImage不是JavaSE的一部分,我以爲你會幫我解決這個問題。如果你想分享你的實施,你怎麼沒有提供適當的文件?無論如何,任何幫助將深受讚賞。 (我從來沒有試過這麼多猜測) – 2011-05-17 15:02:13

+0

我不明白你的評論。 BufferedImage *是JavaSE的一部分。它*不是* Android的一部分。所以,你不能在Android項目中包含像'javase.jar'這樣的使用BufferedImage的代碼,這並不奇怪。這是你報告的錯誤,我提供瞭解決方案:除core.jar之外,不包含任何內容。 ('的JavaME。jar'是JavaME代碼,並且在Android中不起作用或者不會有用。)我是ZXing的作者,所以我已經在項目中與你分享了我的所有實現,所以我進一步不理解。 – 2011-05-17 22:19:38

+0

我無意表達意思,請接受我的道歉。無論如何,我應該怎麼做才能使用BufferedImage?你能把你的敏銳知識放在幾行代碼中嗎?謝謝。 – 2011-05-17 22:27:43

4

傑克遜我也建議你inazaruk建議你的方式。但如果你仍然有問題整合該部分代碼(zxing-android)。

  • 只需下載zxing-core
  • 導入這個核心項目到Eclipse
  • 在您的應用程序的Eclipse構建路徑添加斑馬線核項目的引用,以便它不是由JVM而是通過Dalvik的(剛剛編譯避免使用的jar文件,因爲它與JVM編譯),並簡單地使用所有的類如https://code.google.com/p/zxing/wiki/DeveloperNotes

編輯建議: 正如Sean Owen所述,android不具有BufferedImage類。您需要導入這些類來滿足它們的依賴關係&。

  • com.google.zxing.BinaryBitmap,
  • com.google.zxing.LuminanceSource,
  • com.google.zxing.MultiFormatReader,
  • com.google.zxing.Reader
  • COM .google.zxing.Result
  • com.google.zxing.common.HybridBinarizer

然後你可以使用它像這樣

Bitmap bMap = BitmapFactory.decodeStream(new FileInputStream(file)); 
LuminanceSource source = new RGBLuminanceSource(bMap); 
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
           source)); 
Reader reader = new MultiFormatReader(); 

Result result = reader.decode(bitmap); 
+0

我能夠導入zxing-core。不知道如何做第三步。無論如何,我跟着DeveloperNotes,但BufferedImage無法解析。 – 2011-05-17 14:44:36

+0

@Mr Jackson如果你現在沒有任何問題,那麼你不需要將該項目添加到你的構建路徑。參見上面編輯的**部分 – 100rabh 2011-05-18 08:02:15

+0

謝謝!現在我需要的只是捕獲一個圖像,並使用FileInputStream打開它。對? – 2011-05-18 09:18:53

0

嗨,夥計其實我也卡在這個問題。但最後我成功地運行了這個項目。當我們下載zxing項目,只是我們導入它,但有錯誤號碼來,因爲許多文件丟失。

其實這些文件分佈在整個項目中。因此,如果您在Zxing-master中搜索這些文件,您可以輕鬆找到。複製這些文件,並將其複製到您的項目中,就像在我的工作區中一樣,它是「CaptureActivity」。由於Java編譯器(此項目需要至少Java 1.7和Android OS 4.4),編譯錯誤也可能是一個問題。

無論我在運行這個項目時知道什麼,我解釋過。任何查詢都會留下評論。