美文网首页我爱编程
Android 实现扫描二维码功能

Android 实现扫描二维码功能

作者: 谁动了我的代码QAQ | 来源:发表于2018-04-13 18:22 被阅读0次

前一阵公司项目需要用到了扫描二维码并返回扫描到的值的功能,于是翻阅了一些资料,Android中zxing这个第三库可以完美实现这个功能,接下来就介绍一下如何使用。
我的方法是借鉴的简书上的以为大神的我只是对代码进行了修改和加强,修改了中文乱码问题,同时也增加了动态申请权限。贴一下原贴地址:https://www.jianshu.com/p/e80a85b17920
我已经将修改后的Demo地址上传到了github上

一.在项目的build.gradle中添加依赖 com.google.zxing:core:3.3.0

二.将整个包 com.google.zxing(包含路径)复制到自己的项目下。

三.复制res下的资源文件,注意不要覆盖掉了自己项目里的内容。可以将内容复制到对应的文件里边。
1.raw下的beep.ogg。音频文件CaptureActivity中使用,若不想用则可以自行修改CaptureActivity。
2.value 下的attrs文件。
3.value下的ids.xml文件。
4.value下的string内容。
5.value下的color内容。
6.layout下的Activity_scanner 复制到你的layout下。

四.在清单文件里注册Activity、添加权限

 <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" /> <!-- 自动聚焦权限 -->

部分源码介绍:
CaptureActivity Zxing暴露出来进行调用的界面,在handleDecode方法中对扫码成功后的动作进行处理。
CameraManager getFramingRect() 方法,定义了扫描的区域,可以自己修改。
ViewfinderView ZXing 扫码窗口的绘制。
private void drawTextInfo(Canvas canvas, Rect frame) 修改文本绘制的位置
private void drawLaserScanner(Canvas canvas, Rect frame)修改扫描线的样式。注意若使用paint.setShader(Shader
shader) 方法,一定要在绘制完成后调用paint.setShader(null)。以免绘制信息出错。
CameraConfigurationManager 修改横竖屏、处理变形效果的核心类。
DecodeHandler.decode ZXing 解码的核心类
CaptureActivityHandler 当DecodeHandler.decode完成解码后,系统会向CaptureActivityHandler发消息。如果编码成功则
调用CaptureActivity.handleDecode方法对扫描到的结果进行分类处理。

相关文章

网友评论

    本文标题:Android 实现扫描二维码功能

    本文链接:https://www.haomeiwen.com/subject/hmhhkftx.html