1.添加依赖:
implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.2.1'
或者
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1'
2.xml文件
<cn.bingoogolapple.qrcode.zbar.ZBarView
android:id="@+id/zbarview"
style="@style/MatchMatch"
app:qrcv_animTime="1000"
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_isShowDefaultScanLineDrawable="true"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_topOffset="90dp" />
3.获取控件,并实现QRCodeView.Delegate接口
public class MainActivity extends AppCompatActivity implements QRCodeView.Delegate {
private QRCodeView zbxing;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
zbxing = findViewById(R.id.zbxing);
zbxing.setDelegate(this);
}
//重写两个方法
@Override
public void onScanQRCodeSuccess(String result) {
vibrate();
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
zbxing.startSpot();
}
@Override
public void onScanQRCodeOpenCameraError() {
Toast.makeText(this, "错误", Toast.LENGTH_SHORT).show();
}
//实现onStart,onStop,onDestroy方法
@Override
protected void onStart() {
super.onStart();
//判断权限
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
zbxing.startCamera();//打开相机
zbxing.showScanRect();//显示扫描框
zbxing.startSpot();//开始识别二维码
//mQRCodeView.openFlashlight();//开灯
//mQRCodeView.closeFlashlight();//关灯
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 100);
}
}
@Override
protected void onStop() {
zbxing.stopCamera();
super.onStop();
}
@Override
protected void onDestroy() {
zbxing.onDestroy();
super.onDestroy();
}
private void vibrate() {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(200);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
if (grantResults[0] == 0) {
zbxing.startCamera();//打开相机
zbxing.showScanRect();//显示扫描框
zbxing.startSpot();//开始识别二维码
//mQRCodeView.openFlashlight();//开灯
//mQRCodeView.closeFlashlight();//关灯
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 100);
}
}
}
}