引用了
github
导入包名
compile 'com.google.zxing:core:3.2.1'
compile 'cn.bingoogolapple:bga-qrcodecore:1.1.7@aar'
compile 'cn.bingoogolapple:bga-zxing:1.1.7@aar'
引入权限
<uses-permission android:name="android.permission.CAMERA" />
<!--android.permission.VIBRATE允许访问震动权限-->
<uses-permission android:name="android.permission.VIBRATE" />
<!--android.permission.FLASHLIGHT允许访问闪光灯的权限-->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
布局代码
<!--app:qrcv_barcodeRectHeight条码扫描框的宽度
qrcv_borderSize扫描框的宽度
qrcv_cornerColor扫描框的颜色
qrcv_cornerLength扫描框边角线的长度
qrcv_cornerSize扫描框边角线的宽度
qrcv_customScanLineDrawable扫描线的图片资源「默认的扫描线图片样式不能满足你的需求时使用,设置该属性后 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 将失效」
qrcv_isBarcode是否是扫条形码
qrcv_isCenterVertical扫描框是否垂直居中,该属性为true时会忽略 qrcv_topOffset 属性
qrcv_isOnlyDecodeScanBoxArea 是否只识别扫描框区域的二维码
qrcv_isScanLineReverse扫描线是否来回移动
qrcv_isShowDefaultGridScanLineDrawable是否显示默认的网格图片扫描线
qrcv_isShowTipBackground是否显示提示文案的背景
qrcv_isShowTipTextAsSingleLine是否把提示文案作为单行显示
qrcv_isTipTextBelowRect提示文案是否在扫描框的底部
qrcv_maskColor除去扫描框,其余部分阴影颜色
qrcv_qrCodeTipText
qrcv_rectWidth 扫描框的宽度
qrcv_scanLineColor扫描线的颜色「扫描线和默认的扫描线图片的颜色」
qrcv_scanLineMargin扫描线距离上下或者左右边框的间距
qrcv_scanLineSize扫描线的宽度
qrcv_toolbarHeight Toolbar 的高度,通过该属性来修正由 Toolbar 导致扫描框在垂直方向上的偏差
qrcv_topOffset扫描框距离 toolbar 底部的距离-->
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:id="@+id/zxingview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:qrcv_animTime="1000"
app:qrcv_barCodeTipText="将条码放入框内,即可自动扫描"
app:qrcv_barcodeRectHeight="140dp"
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_customScanLineDrawable="@drawable/scan_icon_scanline"
app:qrcv_isBarcode="false"
app:qrcv_isCenterVertical="false"
app:qrcv_isOnlyDecodeScanBoxArea="false"
app:qrcv_isScanLineReverse="true"
app:qrcv_isShowDefaultGridScanLineDrawable="false"
app:qrcv_isShowDefaultScanLineDrawable="true"
app:qrcv_isShowTipBackground="true"
app:qrcv_isShowTipTextAsSingleLine="false"
app:qrcv_isTipTextBelowRect="false"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_qrCodeTipText="将二维码/条码放入框内,即可自动扫描"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_scanLineMargin="0dp"
app:qrcv_scanLineSize="0.5dp"
app:qrcv_tipTextColor="@android:color/white"
app:qrcv_tipTextSize="12sp"
app:qrcv_toolbarHeight="56dp"
app:qrcv_topOffset="90dp"/>
使用代码
public class ScanActivity extends AppCompatActivity {
private ZXingView zxingview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
zxingview = findViewById(R.id.zxingview);
zxingview.setDelegate(new QRCodeView.Delegate() {
@Override
public void onScanQRCodeSuccess(String result) {
Toast.makeText(ScanActivity.this, "识别结果" + result, Toast.LENGTH_SHORT).show();
}
@Override
public void onScanQRCodeOpenCameraError() {
Toast.makeText(ScanActivity.this, "识别错误", Toast.LENGTH_SHORT).show();
}
});
}
protected void onStart() {
super.onStart();
//打开后置摄像头预览,但并没有开始扫描
zxingview.startCamera();
//开启扫描框
zxingview.showScanRect();
zxingview.startSpot();
}
@Override
protected void onStop() {
zxingview.stopCamera();
super.onStop();
}
@Override
protected void onDestroy() {
zxingview.onDestroy();
super.onDestroy();
}
}
补充说明
1.切换到条形码扫描
zxingview.changeToScanBarcodeStyle();
2.切换到二维码扫描
zxingview.changeToScanQRCodeStyle();
3.打开关闭闪光灯
zxingview.openFlashlight();
zxingview.closeFlashlight();
网友评论