1.build.gradle中添加
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'
2.AndroidMainfest中添加权限
<uses-permission android:name="android.permission.CAMERA" />
、 <activity android:name=".QRActivity"/>
3.新建类QRActivity
/**
* 二维码扫描类
* 二维码生成方法如下
* QRCodeEncoder.syncEncodeQRCode(context:内容,size:图片大小)
*/
public class QRActivity extends AppCompatActivity implements QRCodeView.Delegate {
private ZXingView mQRCodeView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qr);
mQRCodeView = (ZXingView) findViewById(R.id.qr);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
1);
} else {
mQRCodeView.startSpot();
mQRCodeView.setDelegate(this);
}
}
@Override
protected void onStart() {
super.onStart();
//打开后置摄像头预览,但并没有开始扫描
mQRCodeView.startCamera();
//开启扫描框
mQRCodeView.showScanRect();
mQRCodeView.startSpot();
}
@Override
protected void onStop() {
mQRCodeView.stopCamera();
super.onStop();
}
@Override
public void onScanQRCodeSuccess(String result) {
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
@Override
public void onScanQRCodeOpenCameraError() {
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 1) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//打开后置摄像头预览,但并没有开始扫描
mQRCodeView.startCamera();
//开启扫描框
mQRCodeView.showScanRect();
mQRCodeView.startSpot();
return;
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
4.新建布局文件activity_qr
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:id="@+id/qr"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:qrcv_animTime="1000"
app:qrcv_borderColor="#00000000"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="#ffffff"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_rectWidth="220dp"
app:qrcv_scanLineColor="#ffffff"
app:qrcv_scanLineSize="1dp"
app:qrcv_topOffset="100dp" />
</LinearLayout>