本文使用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;}


更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. Android通过zxing来进行二维码识别与生成
  4. Android使double保留两位小数的多方法 java保留两位小数
  5. 腾讯云-视频直播(android集成)
  6. Android(安卓)studio Error:(32, 13) Failed to resolve: com.an
  7. Android(安卓)常用代码收集
  8. Android中常用的List滚动列表操作
  9. Android代码规范+小技巧

随机推荐

  1. Android利用硬解硬编和OpenGLES来高效的
  2. Android中Styles、Themes、attrs介绍
  3. 轻松搞定 android MVP 架构、okHttp 网络
  4. Android——填坑android studio2.3.3升级
  5. Android(安卓)Scroll详解(二):OverScrolle
  6. Android和四大主流手机操作系统的区别联
  7. Android(安卓)数字签名学习笔记
  8. 一个使用FFmpeg库读取3gp视频的例子-Andr
  9. Android(安卓)Log分析
  10. 【转】 Mac环境下Android(安卓)APK包反编