前言
要做一个功能,二维码识别。网上找一堆相关的Demo,但是总不是想要的效果,或者都是多年前的版本,权衡考虑之后,决定亲自操刀。不纠结直接选中Zxing框架,https://github.com/zxing/zxing 在网站上直接clone下来,运行,然后就发现问题了…
选Zxing存在的问题
- 为什么是横屏,调成竖屏,居然有问题
- 这个包居然有好多用不着的代码
- 默认识别的界面不是想要的效果
- 加个Title在顶部之后识别框居然不居中
发现问题,那么本文的优点就来了,且听一一道来
- 集成速度快,相关核心功能都已经再次封装好
- 最新的V3.30的工程,识别速度快,基本见图秒识别
- 解决横竖屏的问题,通过设置Activity的android:screenOrientation=”portrait” 方式设置,就可以自适应横屏竖屏
- 去掉工程中无用的代码,留下最核心的代码,实现最最最轻量级
- 自定义AutoScannerView控件,实现微信识别区域的效果
- 解决工程之间只以屏幕为居中的问题,目前可以根据设置宽度高度自适应居中
- 具体示例参考:https://github.com/yangxixi88/ZxingLite
光说不练假把式,上动图
模仿微信的效果,真机上效果更好,录屏的将就着看
默认效果
集成方式
1、导入zxinglite工程,Andorid Studio通过Import Module方式导入
2、导入目标工程之后,如果有存在R等资源文件未找到,可以在菜单栏Build->Make Module zxinglite 即可
3、添加两个权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
4、集成BaseCaptureActivity,实现getSurfaceView()和dealDecode()等方法
5、布局样式,仿微信效果则用AutoScannerView,默认效果使用com.google.zxing.client.android.ViewfinderView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_wechat_capture"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="yangxixi.zxinglib.WeChatCaptureActivity">
<SurfaceView
android:id="@+id/preview_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<com.google.zxing.client.android.AutoScannerView
android:id="@+id/autoscanner_view"
android:layout_width="match_parent"
android:layout_height</