Android----识别二维码

作者: pgydbh | 来源:发表于2018-08-12 12:42 被阅读2次

    引用了

    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();
    

    相关文章

      网友评论

        本文标题:Android----识别二维码

        本文链接:https://www.haomeiwen.com/subject/atdsbftx.html