1.//依赖注入
implementation'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
2.根据生命周期来对业务逻辑进行处理
1.布局的声明
<cn.bingoogolapple.qrcode.zxing.ZXingView android:id="@+id/zbarview" android:layout_width="match_parent" android:layout_height="match_parent" app:qrcv_animTime="1000" app:qrcv_barCodeTipText="将条码放入框内,即可自动扫描" app:qrcv_barcodeRectHeight="120dp" app:qrcv_borderColor="@color/color_1FB8FF" app:qrcv_borderSize="1dp" app:qrcv_cornerColor="@color/color_1FB8FF" app:qrcv_cornerDisplayType="center" app:qrcv_cornerLength="20dp" app:qrcv_cornerSize="3dp" app:qrcv_isAutoZoom="true" app:qrcv_isBarcode="false" app:qrcv_isOnlyDecodeScanBoxArea="false" app:qrcv_isScanLineReverse="true" app:qrcv_isShowDefaultGridScanLineDrawable="false" app:qrcv_isShowDefaultScanLineDrawable="true" app:qrcv_isShowLocationPoint="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/color_1FB8FF" app:qrcv_scanLineMargin="0dp" app:qrcv_scanLineSize="0.5dp" app:qrcv_tipTextColor="@android:color/white" app:qrcv_tipTextSize="12sp" app:qrcv_verticalBias="0.5" />
2.Activity生命周期来处理业务逻辑
1.//动态权限的受理AndPermission.with(this).runtime().permission(Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE, Permission.CAMERA) .onGranted(new Action() { @Override public void onAction(Object data) { mZbarview.startCamera(); // 打开后置摄像头开始预览,但是并未开始识别 //注册事件 mZbarview.setDelegate(QRcodeActivity.this); mZbarview.startSpotAndShowRect(); // 显示扫描框,并开始识别 } }).onDenied(new Action() { @Override public void onAction(Object data) { Toast.makeText(QRcodeActivity.this, "请打开权限", Toast.LENGTH_SHORT).show(); }}).start();Log.w("TAG", "onAction ==== ");
2.
@Override protected void onStart() {super.onStart();// mZbarview.startCamera(); // 打开后置摄像头开始预览,但是并未开始识别// mZBarView.startCamera(Camera.CameraInfo.CAMERA_FACING_FRONT); // 打开前置摄像头开始预览,但是并未开始识别 mZbarview.startSpotAndShowRect(); // 显示扫描框,并开始识别 }
3.
@Overrideprotected void onStop() { mZbarview.stopCamera(); // 关闭摄像头预览,并且隐藏扫描框 super.onStop();}
4.
@Overrideprotected void onDestroy() { mZbarview.onDestroy(); super.onDestroy();}
5.实现接口来处理扫描结果(下面附图说明)
// 处理扫描结果 @Override public void onScanQRCodeSuccess(String result) {// vibrate(); Log.w("TAG", "onScanQRCode success ==== " + result); Toast.makeText(getActivity(), "扫描结果!=== " + result, Toast.LENGTH_SHORT).show(); }


3.手机震动方法处理(在扫描成功的方法中调用此方法就可以了)
private void vibrate() {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(200);
}
网友评论