Android 最好用的掃碼框架 封裝ZXing
之前專案中用到的掃碼框架還是ZXing,嘻嘻 來到新公司之後 發現我們這個掃碼框架是用的一個基於ZX ing封裝的一個掃碼框架 ,而且掃碼的速度和準確率都比ZXing要強大的許多,因為要改其中的一個小功能 ,所以就研究了一下。QRCode 掃描二維碼、掃描條形碼、相簿獲取圖片後識別、生成帶 Logo 二維碼、支援微博微信 QQ 二維碼掃描樣式
下面就讓我們開始吧
首先給出原作者的git地址
Android" target="_blank" rel="nofollow,noindex">https://github.com/bingoogolapple/BGAQRCode-Android
效果圖如下(這個是原作者的哦):

下面開始上程式碼了 我只用的Zxing
1.gradle中新增:

dependencies {
implementation'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'
}
這裡我是用的最新的 因為用到了自定義的掃碼格式
2.在佈局檔案中:

3.在Activity中使用
/**
* 延遲delay毫秒後開始識別
*/
mQRCodeView.startSpotDelay(800);
需要當前Activity實現QRCodeView.Delegate,ICaptureView;
implements QRCodeView.Delegate,ICaptureView;
這裡面有兩個回撥方法 一個是掃描結果的回撥 一個是否需要開啟閃光燈
/** * 處理掃描結果 **@paramresult 攝像頭掃碼時只要回調了該方法 result 就一定有值,不會為 null。解析本地圖片或 Bitmap 時 result 可能為 null*/
voidonScanQRCodeSuccess(Stringresult)
/** * 攝像頭環境亮度發生變化 **@paramisDark 是否變暗*/
voidonCameraAmbientBrightnessChanged(booleanisDark);
/** * 處理開啟相機出錯*/
voidonScanQRCodeOpenCameraError()
自定義屬性說明
屬性名說明預設值
qrcv_topOffset 掃描框距離 toolbar 底部的距離90dp
qrcv_cornerSize 掃描框邊角線的寬度3dp
qrcv_cornerLength 掃描框邊角線的長度20dp
qrcv_cornerColor 掃描框邊角線的顏色@android:color/white
qrcv_cornerDisplayType 掃描框邊角線顯示位置(相對於邊框),預設值為中間center
qrcv_rectWidth 掃描框的寬度200dp
qrcv_barcodeRectHeight 條碼掃樣式描框的高度140dp
qrcv_maskColor 除去掃描框,其餘部分陰影顏色#33FFFFFF
qrcv_scanLineSize 掃描線的寬度1dp
qrcv_scanLineColor 掃描線的顏色「掃描線和預設的掃描線圖片的顏色」@android:color/white
qrcv_scanLineMargin 掃描線距離上下或者左右邊框的間距0dp
qrcv_isShowDefaultScanLineDrawable 是否顯示預設的圖片掃描線「設定該屬性後 qrcv_scanLineSize 將失效,可以通過 qrcv_scanLineColor 設定掃描線的顏色,避免讓你公司的UI單獨給你出特定顏色的掃描線圖片」false
qrcv_customScanLineDrawable 掃描線的圖片資源「預設的掃描線圖片樣式不能滿足你的需求時使用,設定該屬性後 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 將失效」null
qrcv_borderSize 掃描邊框的寬度1dp
qrcv_borderColor 掃描邊框的顏色@android:color/white
qrcv_animTime 掃描線從頂部移動到底部的動畫時間「單位為毫秒」1000
qrcv_isCenterVertical (已廢棄,如果要垂直居中用 qrcv_verticalBias="0.5"來代替)掃描框是否垂直居中,該屬性為true時會忽略 qrcv_topOffset 屬性false
qrcv_verticalBias 掃描框中心點在螢幕垂直方向的比例,當設定此值時,會忽略 qrcv_topOffset 屬性-1
qrcv_toolbarHeightToolbar 的高度,通過該屬性來修正由 Toolbar 導致掃描框在垂直方向上的偏差0dp
qrcv_isBarcode 掃描框的樣式是否為掃條形碼樣式false
qrcv_tipText 提示文案null
qrcv_tipTextSize 提示文案字型大小14sp
qrcv_tipTextColor 提示文案顏色@android:color/white
qrcv_isTipTextBelowRect 提示文案是否在掃描框的底部false
qrcv_tipTextMargin 提示文案與掃描框之間的間距20dp
qrcv_isShowTipTextAsSingleLine 是否把提示文案作為單行顯示false
qrcv_isShowTipBackground 是否顯示提示文案的背景false
qrcv_tipBackgroundColor 提示文案的背景色#22000000
qrcv_isScanLineReverse 掃描線是否來回移動true
qrcv_isShowDefaultGridScanLineDrawable 是否顯示預設的網格圖片掃描線false
qrcv_customGridScanLineDrawable 掃描線的網格圖片資源nulll
qrcv_isOnlyDecodeScanBoxArea 是否只識別掃描框中的碼false
qrcv_isShowLocationPoint 是否顯示定位點false
qrcv_isAutoZoom 碼太小時是否自動縮放false
更多的使用請看作者的git地址 裡面用更詳細的講解