一掃天下——ZXing使用全解析


一掃天下——ZXing使用全解析

二維碼如今已經爛App了,無論什么App。沒有二維碼就好像低人一等了。

所以,在自己的項目中集成二維碼功能還是非常有必要的。

網上非常多都是基於ZXing2.3的。可是如今都3.1了,改了非常多bug,也進行了非常多優化。最好按本文弄一下。

參拜ZXing

ZXing的github地址:
https://github.com/zxing/zxing

通過git clone git@github.com:zxing/zxing.git 命令我們能夠把整個ZXing項目拉取下來。

這里寫圖片描寫敘述

然而這並沒有什么卵用。

由於ZXing的項目是非常龐大的。功能也非常多。可是我們不須要這么多,我們僅僅關心Android部分的。

獲得ZXing的祝福之jar

在使用ZXing之前。我們須要先編譯它的jar包,我們能夠看見源碼文件夾中有一個core的文件夾,我們能夠把這個文件夾導入eclipse作為一個javaproject。

最后通過export導出一個jar包。

獲得ZXing核心功能

我們須要把核心的掃碼、解碼功能抽取出來。這一步。網上已經有非常多人做過了。僅僅是大部分都是基於第一個抽ZXing的人,而那個是基於ZXing1.5、2.3的,所以。記得要進行Update哦。

那么我們怎樣獲得最新的ZXing代碼呢,非常easy,找一個舊的。然后把最新的代碼一個個copy過去替換就好了,當然,還是會有一些問題,只是一步步解決就能夠了。都不是非常大的問題。

飯來張口

這里為大家也提供一個封裝好的最新的ZXing Lib:

https://github.com/xuyisheng/ZXingLib

基於ZXing3.1封裝。包括了最新的jar包和代碼。

解析

CaptureActivity

ZXing暴露的調用Activity。在handleDecode方法中對掃碼成功后的動作作處理。

ViewfinderView

ZXing掃碼窗體的繪制,原始的ZXing使用這樣的方式去繪制,在上面提供的開源庫中,作者將掃描框的繪制直接抽取到了XML文件里,這樣改動起來更加方便了。

CameraConfigurationManager

改動橫豎屏、處理變形效果的核心類。

在public void setDesiredCameraParameters(Camera camera, boolean safeMode)方法中(讀取配置設置相機的對焦模式、閃光燈模式等等),能夠將掃描改為豎屏:

即:
在方法最后加上:

/** 設置相機預覽為豎屏 */
camera.setDisplayOrientation(90);

就可以。

在public void initFromCameraParameters(Camera camera)方法中(計算了屏幕分辨率和當前最適合的相機像素),我們能夠對改動為豎屏掃碼后,由於像素信息點沒有對調造成圖像扭曲變形進行改動。

即:

在Log.d(TAG, “Screen resolution: ” + screenResolution);后加上例如以下的代碼:

/** 由於換成了豎屏顯示,所以不替換屏幕寬高得出的預覽圖是變形的 */
Point screenResolutionForCamera = new Point();
screenResolutionForCamera.x = screenResolution.x;
screenResolutionForCamera.y = screenResolution.y;

if (screenResolution.x < screenResolution.y) {
    screenResolutionForCamera.x = screenResolution.y;
    screenResolutionForCamera.y = screenResolution.x;
}

最后,將screenResolution替換為screenResolutionForCamera:

cameraResolution = findBestPreviewSizeValue(parameters, screenResolutionForCamera); 

DecodeHandler.decode

ZXing解碼的核心類

CaptureActivityHandler

當DecodeHandler.decode完畢解碼后,系統會向CaptureActivityHandler發消息。假設編碼成功則調用CaptureActivity.handleDecode方法對掃描到的結果進行分類處理。

最后

本文的Github中已經包括了前面所提到的全部改動(橫豎屏、扭曲變形),用最新的ZXing代碼進行了update,同一時候提供了編碼、解碼方法。而且將掃碼界面抽取成XML(感謝開源作者),方便拓展。

https://github.com/xuyisheng/ZXingLib
https://github.com/xuyisheng/ZXingLib
https://github.com/xuyisheng/ZXingLib

重要的東西發三遍。

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM