参考博客 : https://blog.csdn.net/qq_23547831/article/details/52037710
1. 加入依赖:
implementation 'cn.yipianfengye.android:zxing-library:2.2'
2. 在BaseAppliaction中初始化ZXing :
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ZXingLibrary.initDisplayOpinion(this);
}
}
3. 在AndroidManifest.xml清单文件中加入权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
4. 生成二维码:
//生成二维码
private void GenerateEqcode() {
Bitmap mBitmap = CodeUtils.createImage("http://www.baidu.com", 400, 400, null);
ivShowEqCode.setImageBitmap(mBitmap);//mBitmap为生成的二维码图片
}
5. 扫描二维码:
private static final int REQUEST_CODE = 1;
//扫描二维码
private void ScanEqCode() {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//扫描二维码
if (requestCode == REQUEST_CODE) {
//处理扫描结果(在界面上显示)
if (null != data) {
Bundle bundle = data.getExtras();
if (bundle == null) {
return;
}
if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
String result = bundle.getString(CodeUtils.RESULT_STRING);
Intent intent = new Intent(Intent.ACTION_VIEW,( Uri.parse(result)))
.addCategory(Intent.CATEGORY_BROWSABLE)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
tvSowScanResult.setText("解析二维码失败");
}
}
}
}