Zxing实现二维码扫描

前言

本篇文章从初学者的角度出发,从一个不知道对二维码扫描怎么下手的工作者,需要一个简单的扫描功能的话,可以阅读该篇文章。作为Google开源框架Zxing,里面的文件很大,这里主要讲的是精简ZXing项目后只保留扫描功能的代码,可以缩小项目的大小,对于只要扫描功能的项目已经够用了。扫描后的结果,只要通过WebView百度一下就出来了。简单的说,可以把Zxing这个二维码扫描功能当做一个第三方服务来使用,本篇文章分为两部分,Zxing的集成和Zxing的使用

事先说明

由于二维码需要相机权限,为了适配安卓6.0新权限系统,需要我们手动申请权限,可参考博客点击打开链接

欢迎关注个人CSDN博客:Hensen_的博客:http://blog.csdn.net/qq_30379689

第一部分:Zxing的集成


步骤一:下载我们所需要的Zxing精简版,在Github上搜索Zxing,看到这条记录

进入并下载其jar包:

步骤二:复制到项目中,解压下载的包到ZXingProj/src/com/dtr目录下,复制这个zxing文件夹到我们的项目中,这个时候你会看到有几个红线错误:

接着我们一个个来修改这些红色错误,主要错误包括:导入的R包不是本项目的,存在R.raw和R.id和R.layout的资源找不到。首先我们把该放进去的资源先放进去,复制我们libs中的zxing.jar包到项目中,记得右键AddAsLibrary

复制下载的res的layout文件、res的values的ids文件、raw文件、res的drawable-xhdpi文件到我们项目的对应位置

          

接着就进入红线文件一个个导入,记得删除原先的R包,换成自己项目的R包

到这里我的项目所有红线已经没了,不知道你们呢?还有Result要导入的是带有zxing的包

第二部分:Zxing的使用

步骤一:在manifests中声明权限和Activity

    <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" />
        <activityandroid:name=".zxing.activity.CaptureActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Black.NoTitleBar" /><activityandroid:name=".zxing.activity.ResultActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Black.NoTitleBar" />

步骤二:在代码中启动我们的二维码扫描页面

        Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(OpenZxingActivity.this, CaptureActivity.class));}});

步骤三:真机效果图

CaptureActivity:

ResultActivity:

步骤四:如果你想对Capture页面的界面进行修改可以制作一张图片替换drawable里面图片,这里我们只介绍对读取结果的介绍,我们打开ResultActivity文件:

public class ResultActivity extends Activity {private ImageView mResultImage;private TextView mResultText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_result);Bundle extras = getIntent().getExtras();mResultImage = (ImageView) findViewById(R.id.result_image);mResultText = (TextView) findViewById(R.id.result_text);if (null != extras) {int width = extras.getInt("width");int height = extras.getInt("height");LayoutParams lps = new LayoutParams(width, height);lps.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, getResources().getDisplayMetrics());lps.leftMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());lps.rightMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());mResultImage.setLayoutParams(lps);String result = extras.getString("result");mResultText.setText(result);Bitmap barcode = null;byte[] compressedBitmap = extras.getByteArray(DecodeThread.BARCODE_BITMAP);if (compressedBitmap != null) {barcode = BitmapFactory.decodeByteArray(compressedBitmap, 0, compressedBitmap.length, null);// Mutable copy:barcode = barcode.copy(Bitmap.Config.RGB_565, true);}mResultImage.setImageBitmap(barcode);}}
}

我们大致可以明白,从CaptureActivity中传来一个Bundle的参数,并解析Bundle的宽和高,将其交给ImageView的参数,做为宽高,同时增加Margin属性,同时解析一个Byte数组,其中就是图片的文件的字节码,其中解析的result,则是我们需要的二维码结果:

String result = extras.getString("result");
mResultText.setText(result);

Android实战——Zxing实现二维码扫描相关推荐

  1. Android 基于Zxing的二维码扫描优化

    最近公司项目App中要集成二维码扫描来适应在户外工作的时候,对码头集装箱等上面贴的A4纸张打印的二维码进行识别, 一般App二维码集成后,能扫出来就不管了,但是我们在集成成功后,根据用户反馈,在户外的 ...

  2. 修正Android基于ZXing的二维码扫描——横竖屏自由切换

    概述: 此博客是基于开源的框架ZXing.ZXing用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.ZXing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该 ...

  3. 基于zxing的二维码扫描

    前言 现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing和Zbar,这文章就来介绍一下基于zxing的二维码扫描.先看下效果图 虽然现在的关于二 ...

  4. 基于zxing的二维码扫描(软件界面)

    原文地址:https://www.jianshu.com/p/ee2ee7677831 前言 现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing ...

  5. Android:实际运用Zxing集成二维码扫描 及 自定义扫码界面(demo源码)

    二维码扫描,各大主流App必不可少的功能,而且google已将轮子替我们造好,直接拿来使用即可.以下是教学如何将Zxing开源库集成到自己项目中,并且自定义扫码界面,后期可根据自己的业务需求进行修改, ...

  6. Android开发之google Zxing实现二维码扫描的代码分析

    1.技术简介    在Android中实现二维码的扫描主要是通过第三方框架来实现的,主要框架是google的Zxing.现在就用该框架来实现二维码及条形码的扫描及识别,同时对于手机中存储的图片也进行识 ...

  7. 【Android 学习】之二维码扫描开发(闪光灯功能)

    .............................................................................. Android二维码扫描我们可以调用Zin ...

  8. Android利用zxing生成二维码

    感谢大佬:https://blog.csdn.net/mountain_hua/article/details/80646089 **gayhub上的zxing可用于生成二维码,识别二维码 gayhu ...

  9. Android利用zxing生成二维码,识别二维码,中间填充图片超详细、超简易教程

    gayhub上的zxing可用于生成二维码,识别二维码 gayhub地址:https://github.com/zxing/zxing 此文只是简易教程,文末附有完整代码和demo下载地址,进入正题: ...

最新文章

  1. 26、HTML 区块
  2. 【译】Construction of a Plasma Chain 0x1
  3. 多线程-NSOperation
  4. 【招聘(北京)】今天誉讯(北京)有限公司招聘高级.NET软件开发前端工程师
  5. android动态申请悬浮框权限,Android创建悬浮窗的完整步骤
  6. 测试面试题集-Python编程题(1)
  7. token的作用_说一说Coin和Token有什么不同
  8. 子网地址和广播地址的计算
  9. bi 工具 市场排行榜_国产移动BI工具排名
  10. JPA 之 detach方法的使用及注意事项
  11. Creo 产品高级装配视频教程
  12. 最优性理论(无约束)
  13. 鱼眼镜头拍摄全景图的教程方法
  14. jsp用户信息管理系统
  15. Nginx启动失败的几种错误处理
  16. Authorware与flash按钮的结合使用
  17. poco新增对cocos c++项目的支持~
  18. MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)
  19. 对于一个网络营销新手,需要掌握哪些网络营销基础知识
  20. 摄像头能用计算机里不显示,Windows7“计算机”不显示已连接的摄像头图标怎么办?...

热门文章

  1. Windows配置pip国内镜像源
  2. 2023最新使用python进行shellcode免杀过360火绒 ,反虚拟机
  3. Elasticsearch的search之_shards skipped之谜
  4. 毕业设计 - 车道线检测(自动驾驶 机器视觉)
  5. 多语言通信基础 03 go和python的rpc通信
  6. 热点怎么追?怎样一次看遍全网热搜?
  7. Vue非父子组件传值
  8. SQL Server常用升级方法
  9. NameNode 和 SecondaryNameNode: Fsimage 和 Edits 解析、ovi命令、oev命令
  10. 史上最全数据分析师资料免费下载[Python]