Android的扫一扫功能

在项目尤其是电商项目,可能会频繁用到扫一扫的功能,这里我们使用google自带的控件,首先我们需要的是集成他的jar,这里的版本根据官网更新的录入即可

//noinspection GradleDependency 扫描二维码条形码
implementation 'com.google.zxing:core:3.2.1'
implementation 'cn.bingoogolapple:bga-qrcodecore:1.1.7@aar'
implementation 'cn.bingoogolapple:bga-zxing:1.1.7@aar'

gitee官网信息

然后我们在布局中进行调用


这里附上zxing的相关参数属性,可以根据其中去自定义我们的扫描器

自定义属性说明

最后我们在activity中进行调用就可以了,别忘了添加相机权限哦,如果需要的话还可以加上震动的权限

//扫条形码
binding.zxingView.changeToScanBarcodeStyle();
binding.zxingView.startSpot();
binding.zxingView.setDelegate(new QRCodeView.Delegate() {
    @Override
    public void onScanQRCodeSuccess(String result) {
        getGoodsInfo(result);
        //扫描得到结果震动一下表示
        vibrate();
        //获取结果后三秒后,重新开始扫描
        new Handler().postDelayed(() ->
                binding.zxingView.startSpot(), 3000);
    }
    @Override
    public void onScanQRCodeOpenCameraError() {
        ToastUtils.showToast(mContext, "打开相机错误,请返回重试~");
    }
});

/**
    * 这里需要加上打开关闭的功能,防止泄露
    */
@Override
protected void onStop() {
    binding.zxingView.stopCamera();
    super.onStop();
}
@Override
protected void onDestroy() {
    binding.zxingView.stopCamera();
    super.onDestroy();
}

//震动
private void vibrate() {
    Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
    vibrator.vibrate(200);
}
    
    
    
    

当然现在提倡的动态申请权限,我们可以集成一个权限的jar包,对于权限进行说明,有兴趣的同学可以去官网详细了解一下,这里附上链接

XXPermissions

//权限管理
api 'com.github.getActivity:XXPermissions:12.2'
XXPermissions.with(this)
        .permission(Permission.CAMERA)
        .request(new OnPermissionCallback() {
            @Override
            public void onGranted(List permissions, boolean all) {
                if (all) {
                    go(ScanGoodsUI.class);
                } else {
                    ToastUtils.showToast(mContext, "没有相机权限无法扫一扫哦~");
                }
            }
            @Override
            public void onDenied(List permissions, boolean never) {
                if (never) {
                    ToastUtils.showToast(mContext, "被永久拒绝授权,请手动授予相机权限");
                    XXPermissions.startPermissionActivity(MainActivity.this, permissions);
                } else {
                    ToastUtils.showToast(mContext, "获取相机权限失败");
                }
            }
        });

zxing其实是比较灵活的,它会支持条形码和二维码的双重扫描,只需要设置一个参数就可以了哦~

//扫条形码
binding.zxingView.changeToScanBarcodeStyle();
条形码
//扫二维码
binding.zxingView.changeToScanQRCodeStyle();
扫二维码

你可能感兴趣的:(Android的扫一扫功能)