(大神:https://github.com/bingoogolapple/BGAQRCode-Android )
引用:
ZXing
dependencies {
compile 'com.google.zxing:core:3.2.1'
compile 'cn.bingoogolapple:bga-qrcodecore:latestVersion@aar'
compile 'cn.bingoogolapple:bga-zxing:latestVersion@aar'
}
ZBar
dependencies {
compile 'cn.bingoogolapple:bga-qrcodecore:latestVersion@aar'
compile 'cn.bingoogolapple:bga-zbar:latestVersion@aar'
}
布局文件
ZXing
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:id="@+id/zxingview"
style="@style/MatchMatch"
app:qrcv_animTime="1000"
app:qrcv_borderColor="@android:color/white"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="@color/colorPrimaryDark"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_scanLineSize="1dp"
app:qrcv_topOffset="90dp" />
ZBar
<cn.bingoogolapple.qrcode.zbar.ZBarView
android:id="@+id/zbarview"
style="@style/MatchMatch"
app:qrcv_animTime="1000"
app:qrcv_borderColor="@android:color/white"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="@color/colorPrimaryDark"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_isShowDefaultScanLineDrawable="true"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_topOffset="90dp" />
自定義屬性說明
屬性名 說明 默認值
qrcv_topOffset 掃描框距離 toolbar 底部的距離 90dp
qrcv_cornerSize 掃描框邊角線的寬度 3dp
qrcv_cornerLength 掃描框邊角線的長度 20dp
qrcv_cornerColor 掃描框邊角線的顏色 @android:color/white
qrcv_rectWidth 掃描框的寬度 200dp
qrcv_barcodeRectHeight 條碼掃樣式描框的高度 140dp
qrcv_maskColor 除去掃描框,其余部分陰影顏色 #33FFFFFF
qrcv_scanLineSize 掃描線的寬度 1dp
qrcv_scanLineColor 掃描線的顏色「掃描線和默認的掃描線圖片的顏色」 @android:color/white
qrcv_scanLineMargin 掃描線距離上下或者左右邊框的間距 0dp
qrcv_isShowDefaultScanLineDrawable 是否顯示默認的圖片掃描線「設(shè)置該屬性后 qrcv_scanLineSize 將失效,可以通過 qrcv_scanLineColor 設(shè)置掃描線的顏色,避免讓你公司的UI單獨給你出特定顏色的掃描線圖片」 false
qrcv_customScanLineDrawable 掃描線的圖片資源「默認的掃描線圖片樣式不能滿足你的需求時使用,設(shè)置該屬性后 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 將失效」 null
qrcv_borderSize 掃描邊框的寬度 1dp
qrcv_borderColor 掃描邊框的顏色 @android:color/white
qrcv_animTime 掃描線從頂部移動到底部的動畫時間「單位為毫秒」 1000
qrcv_isCenterVertical 掃描框是否垂直居中,該屬性為true時會忽略 qrcv_topOffset 屬性 false
qrcv_toolbarHeight Toolbar 的高度,通過該屬性來修正由 Toolbar 導(dǎo)致掃描框在垂直方向上的偏差 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 是否顯示默認的網(wǎng)格圖片掃描線 false
qrcv_customGridScanLineDrawable 掃描線的網(wǎng)格圖片資源 nulll
qrcv_isOnlyDecodeScanBoxArea 是否只識別掃描框區(qū)域的二維碼 false
接口說明
QRCodeView
/**
* 設(shè)置掃描二維碼的代理
*
* @param delegate 掃描二維碼的代理
*/
public void setDelegate(Delegate delegate)
/**
* 顯示掃描框
*/
public void showScanRect()
/**
* 隱藏掃描框
*/
public void hiddenScanRect()
/**
* 打開后置攝像頭開始預(yù)覽,但是并未開始識別
*/
public void startCamera()
/**
* 打開指定攝像頭開始預(yù)覽,但是并未開始識別
*
* @param cameraFacing Camera.CameraInfo.CAMERA_FACING_BACK or Camera.CameraInfo.CAMERA_FACING_FRONT
*/
public void startCamera(int cameraFacing)
/**
* 關(guān)閉攝像頭預(yù)覽,并且隱藏掃描框
*/
public void stopCamera()
/**
* 延遲1.5秒后開始識別
*/
public void startSpot()
/**
* 延遲delay毫秒后開始識別
*
* @param delay
*/
public void startSpotDelay(int delay)
/**
* 停止識別
*/
public void stopSpot()
/**
* 停止識別,并且隱藏掃描框
*/
public void stopSpotAndHiddenRect()
/**
* 顯示掃描框,并且延遲1.5秒后開始識別
*/
public void startSpotAndShowRect()
/**
* 打開閃光燈
*/
public void openFlashlight()
/**
* 關(guān)閉散光燈
*/
public void closeFlashlight()
QRCodeView.Delegate 掃描二維碼的代理
/**
* 處理掃描結(jié)果
*
* @param result
*/
void onScanQRCodeSuccess(String result)
/**
* 處理打開相機出錯
*/
void onScanQRCodeOpenCameraError()
QRCodeDecoder 解析二維碼圖片。幾個重載方法都是耗時操作,請在子線程中調(diào)用。
/**
* 同步解析本地圖片二維碼。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param picturePath 要解析的二維碼圖片本地路徑
* @return 返回二維碼圖片里的內(nèi)容 或 null
*/
public static String syncDecodeQRCode(String picturePath)
/**
* 同步解析bitmap二維碼。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param bitmap 要解析的二維碼圖片
* @return 返回二維碼圖片里的內(nèi)容 或 null
*/
public static String syncDecodeQRCode(Bitmap bitmap)
QRCodeEncoder 創(chuàng)建二維碼圖片。幾個重載方法都是耗時操作,請在子線程中調(diào)用。
/**
* 同步創(chuàng)建黑色前景色、白色背景色的二維碼圖片。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param content 要生成的二維碼圖片內(nèi)容
* @param size 圖片寬高,單位為px
*/
public static Bitmap syncEncodeQRCode(String content, int size)
/**
* 同步創(chuàng)建指定前景色、白色背景色的二維碼圖片。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param content 要生成的二維碼圖片內(nèi)容
* @param size 圖片寬高,單位為px
* @param foregroundColor 二維碼圖片的前景色
*/
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor)
/**
* 同步創(chuàng)建指定前景色、白色背景色、帶logo的二維碼圖片。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param content 要生成的二維碼圖片內(nèi)容
* @param size 圖片寬高,單位為px
* @param foregroundColor 二維碼圖片的前景色
* @param logo 二維碼圖片的logo
*/
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, Bitmap logo)
/**
* 同步創(chuàng)建指定前景色、指定背景色、帶logo的二維碼圖片。該方法是耗時操作,請在子線程中調(diào)用。
*
* @param content 要生成的二維碼圖片內(nèi)容
* @param size 圖片寬高,單位為px
* @param foregroundColor 二維碼圖片的前景色
* @param backgroundColor 二維碼圖片的背景色
* @param logo 二維碼圖片的logo
*/
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, int backgroundColor, Bitmap logo)
福利