Android----识别二维码

引用了

https://blog.csdn.net/AndroidNUll/article/details/68949233

github

https://github.com/bingoogolapple/BGAQRCode-Android

导入包名

    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();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容