Android中二维码扫描的最常用库是zxing和zbar,zxing项目地址为https://github.com/zxing/zxing,目前还有多个人在维护。zbar主要用C来写的,对速度有要求的可使用zbar,但目前没有在维护,项目地址:https://github.com/ZBar/ZBar。
1.添加依赖
在根build.gradle中添加maven { url ‘https://jitpack.io‘ }
allprojects { repositories { google() jcenter() maven { url ‘https://jitpack.io‘ } } }
在你的app的build.gradle中添加依赖implementation ‘com.github.yuzhiqiang1993:zxing:2.0.0‘
/*添加依赖*/ compile ‘com.github.yuzhiqiang1993:zxing:2.0.0‘
2.权限
<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" />
跳转到扫描界面
Intent intent = new Intent(MainActivity.this, CaptureActivity.class); /*ZxingConfig是配置类 可以设置是否显示底部布局,闪光灯,相册,是否播放提示音 震动等动能 * 也可以不传这个参数 * 不传的话 默认都为默认不震动 其他都为true * */ //ZxingConfig config = new ZxingConfig(); //config.setShowbottomLayout(true);//底部布局(包括闪光灯和相册) //config.setPlayBeep(true);//是否播放提示音 //config.setShake(true);//是否震动 //config.setShowAlbum(true);//是否显示相册 //config.setShowFlashLight(true);//是否显示闪光灯 //intent.putExtra(Constant.INTENT_ZXING_CONFIG, config); startActivityForResult(intent, REQUEST_CODE_SCAN);
在onActivityResult中接收解析的结果
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 扫描二维码/条码回传 if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) { if (data != null) { String content = data.getStringExtra(Constant.CODED_CONTENT); result.setText("扫描结果为:" + content); } } }
生成二维码
如果你有生成二维码的需求,可以直接通过CodeCreator.createQRCode(contentEtString, 400, 400, null);
即可。
try { /* * contentEtString:字符串内容 * w:图片的宽 * h:图片的高 * logo:不需要logo的话直接传null * */ Bitmap logo = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); bitmap = CodeCreator.createQRCode(contentEtString, 400, 400, logo); } catch (WriterException e) { e.printStackTrace(); }
参考于:https://blog.csdn.net/qq_30445765/article/details/79120359