Android实战——Zxing实现二维码扫描
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实现二维码扫描相关推荐
- Android 基于Zxing的二维码扫描优化
最近公司项目App中要集成二维码扫描来适应在户外工作的时候,对码头集装箱等上面贴的A4纸张打印的二维码进行识别, 一般App二维码集成后,能扫出来就不管了,但是我们在集成成功后,根据用户反馈,在户外的 ...
- 修正Android基于ZXing的二维码扫描——横竖屏自由切换
概述: 此博客是基于开源的框架ZXing.ZXing用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.ZXing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该 ...
- 基于zxing的二维码扫描
前言 现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing和Zbar,这文章就来介绍一下基于zxing的二维码扫描.先看下效果图 虽然现在的关于二 ...
- 基于zxing的二维码扫描(软件界面)
原文地址:https://www.jianshu.com/p/ee2ee7677831 前言 现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing ...
- Android:实际运用Zxing集成二维码扫描 及 自定义扫码界面(demo源码)
二维码扫描,各大主流App必不可少的功能,而且google已将轮子替我们造好,直接拿来使用即可.以下是教学如何将Zxing开源库集成到自己项目中,并且自定义扫码界面,后期可根据自己的业务需求进行修改, ...
- Android开发之google Zxing实现二维码扫描的代码分析
1.技术简介 在Android中实现二维码的扫描主要是通过第三方框架来实现的,主要框架是google的Zxing.现在就用该框架来实现二维码及条形码的扫描及识别,同时对于手机中存储的图片也进行识 ...
- 【Android 学习】之二维码扫描开发(闪光灯功能)
.............................................................................. Android二维码扫描我们可以调用Zin ...
- Android利用zxing生成二维码
感谢大佬:https://blog.csdn.net/mountain_hua/article/details/80646089 **gayhub上的zxing可用于生成二维码,识别二维码 gayhu ...
- Android利用zxing生成二维码,识别二维码,中间填充图片超详细、超简易教程
gayhub上的zxing可用于生成二维码,识别二维码 gayhub地址:https://github.com/zxing/zxing 此文只是简易教程,文末附有完整代码和demo下载地址,进入正题: ...
最新文章
- 26、HTML 区块
- 【译】Construction of a Plasma Chain 0x1
- 多线程-NSOperation
- 【招聘(北京)】今天誉讯(北京)有限公司招聘高级.NET软件开发前端工程师
- android动态申请悬浮框权限,Android创建悬浮窗的完整步骤
- 测试面试题集-Python编程题(1)
- token的作用_说一说Coin和Token有什么不同
- 子网地址和广播地址的计算
- bi 工具 市场排行榜_国产移动BI工具排名
- JPA 之 detach方法的使用及注意事项
- Creo 产品高级装配视频教程
- 最优性理论(无约束)
- 鱼眼镜头拍摄全景图的教程方法
- jsp用户信息管理系统
- Nginx启动失败的几种错误处理
- Authorware与flash按钮的结合使用
- poco新增对cocos c++项目的支持~
- MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)
- 对于一个网络营销新手,需要掌握哪些网络营销基础知识
- 摄像头能用计算机里不显示,Windows7“计算机”不显示已连接的摄像头图标怎么办?...
热门文章
- Windows配置pip国内镜像源
- 2023最新使用python进行shellcode免杀过360火绒 ,反虚拟机
- Elasticsearch的search之_shards skipped之谜
- 毕业设计 - 车道线检测(自动驾驶 机器视觉)
- 多语言通信基础 03 go和python的rpc通信
- 热点怎么追?怎样一次看遍全网热搜?
- Vue非父子组件传值
- SQL Server常用升级方法
- NameNode 和 SecondaryNameNode: Fsimage 和 Edits 解析、ovi命令、oev命令
- 史上最全数据分析师资料免费下载[Python]