版权声明:转载请注明本文链接 https://blog.csdn.net/qq_31844349/article/details/81301911
现在高端大气上档次的Android程序都会有二维码生成和扫描的功能,
因为我最近在做一个项目,需要使用到二维码的生成和扫描,经过查询资料,使用的是通过zxing来生成和扫描二维码
简化好的二维码核心库:https://download.csdn.net/download/qq_31844349/10574394
除了核心库还有一些颜色资源和声音资源在我的demo里面,大家可以去下载我写好的demo来找到这些需要用到的资源
Demo地址:https://github.com/sangguangcan/ErWeiMaSaoMiao
这个是代码的结构
把项目里面的res文件夹下的raw文件夹复制到你自己的项目里面
values里面的文件也要复制到你的项目里面,记住不要和你自己项目的内容冲突,你可以只把代码复制到你的文件里
在app的build.gradle加上:
compile 'com.google.zxing:core:3.3.0'
因为需要用到CaptureActivity:需要在清单文件里面注册
<activity
android:name="你自己的包名.CaptureActivity"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>
加上权限:
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" /> <!-- 使用照相机权限 -->
<uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->
如果使用的Android版本是6.0以上需要加上动态权限,我写好的demo里面已经加了动态权限,大家可以参考下
生成二维码:
Bitmap mBitmap = EncodingHandler.createQRCode("二维码内容", 300);
扫描二维码:
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
//因为这里需要拿到扫描后的结果,所以这是使用的是startActivityForResult
startActivityForResult(intent, 0);
重写onActivityresult方法,拿到扫描结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
String scanResult = bundle.getString("result");
tv.setText(scanResult);
}
}
效果图: