Android 实现扫描二维码功能

前一阵公司项目需要用到了扫描二维码并返回扫描到的值的功能,于是翻阅了一些资料,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方法对扫描到的结果进行分类处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容