android 二维码 扫描与生成(内置)
16lz
2021-01-25
本文使用zxing-android-embedded这个开源项目实现 二维码扫描/生成 功能;
开发工具:android studio
1、如何将zxing-android-embedded添加到我们的项目中
1.1 添加arr依赖包
将以下代码添加到build.gradle文件中。
repositories{mavenCentral()maven{url"https://dl.bintray.com/journeyapps/maven"}}dependencies{//SupportsAndroid4.0.3andlater(APIlevel15)compile'com.journeyapps:zxing-android-embedded:2.3.0@aar'//SupportsAndroid2.1andlater(APIlevel7),butnotoptimalforlaterAndroidversions.//IfyouonlyplanonsupportingAndroid4.0.3andup,youdon'tneedtoincludethis.compile'com.journeyapps:zxing-android-legacy:2.3.0@aar'//ConveniencelibrarytolaunchthescanningActivities.//Itautomaticallypicksthebestscanninglibraryfromtheabovetwo,dependingonthe//Androidversionandwhatisavailable.compile'com.journeyapps:zxing-android-integration:2.3.0@aar'//Version3.0.xofzxingcorecontainssomecodethatisnotcompatibleonAndroid2.2andearlier.//Thismostlyaffectsencoding,butyoushouldtestifyouplantosupporttheseversions.//Olderversionse.g.2.2mayalsoworkifyouneedsupportforolderAndroidversions.compile'com.google.zxing:core:3.2.0'}
注意:是app目录下的build.gradle文件
1.2 通过gradle同步你的项目
点击 "sync project with gradle files",android studio 将联网下载必要的文件。
到这一步为止,我们的项目已经可以使用zxing-android-embedded的代码了!
2、扫描二维码
2.1 启动二维码扫描界面
在Activity中,使用默认选项启动,可使用以下代码:
newIntentIntegrator(this).initiateScan();//'this'是当前的Activity
在Fragment中,使用默认选项启动,可使用以下代码:
IntentIntegrator.forSupportFragment(this).initiateScan();//'this'是当前的Fragment
2.1.1自定义选项,参考IntentIntegrator
2.2 接收扫描结果
扫描完成,将会调用你的onActivityResult方法。
因此我们需要重写onActivityResult方法来获取扫描结果。
@OverridepublicvoidonActivityResult(intrequestCode,intresultCode,Intentintent){super.onActivityResult(requestCode,resultCode,intent);if(resultCode==Activity.RESULT_OK){Stringcontents=intent.getStringExtra("SCAN_RESULT");//图像内容Stringformat=intent.getStringExtra("SCAN_RESULT_FORMAT");//图像格式//HandlesuccessfulscanLog.v("qr-code",contents+"####"+format);tv_content.setText(contents);}elseif(resultCode==Activity.RESULT_CANCELED){//Handlecancel}}
到此步,完成了二维码扫描功能。
如果扫描这张以下二维码图片,你将在logcat中得到这条输出语句 “www.google.com####QR_CODE”
3 、生成二维码
如果你需要将一段文本转换成二维码Bitmap,可参考以下代码
privateBitmapgenerateQRCode(StringqrCodeString){Bitmapbmp=null;//二维码图片QRCodeWriterwriter=newQRCodeWriter();try{BitMatrixbitMatrix=writer.encode(qrCodeString,BarcodeFormat.QR_CODE,512,512);//参数分别表示为:条码文本内容,条码格式,宽,高intwidth=bitMatrix.getWidth();intheight=bitMatrix.getHeight();bmp=Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);//绘制每个像素for(intx=0;x<width;x++){for(inty=0;y<height;y++){bmp.setPixel(x,y,bitMatrix.get(x,y)?Color.BLACK:Color.WHITE);}}}catch(WriterExceptione){e.printStackTrace();}returnbmp;}
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android通过zxing来进行二维码识别与生成
- Android使double保留两位小数的多方法 java保留两位小数
- 腾讯云-视频直播(android集成)
- Android(安卓)studio Error:(32, 13) Failed to resolve: com.an
- Android(安卓)常用代码收集
- Android中常用的List滚动列表操作
- Android代码规范+小技巧