zxing是google的开源项目,它能识别现有流行的二维码和条形码。
- Android Studio 2.2.2
- JDK1.8
- 上篇文章介绍的zxing解压后的文件夹zxing-master
一、新建项目
打开Android Studio,选择New Project,项目名暂时命名为:ZXingDemo;Next后选择Empty Activity,默认名为MainActivity,然后Finish;
二、引入依赖核心包
切换到Project视图,将zxing-master/core/target目录下的core-3.3.2-SNAPSHOT.jar复制到libs文件夹下,然后选中该jar包,右键选中Add As Library,点击OK,将会在External Libraries中;此步类似于eclipse Add to Build Path操作。
三、引入zxing源码和资源
- 进入zxing-master/android,将AndroidManifest.xml复制到ZXingDemo并替换原有文件;
- 进入zxing-master/android/src,将com文件夹复制到项目的java目录下;
- 进入zxing-master/android/res,选择所有文件并复制到项目res文件夹下,选择Skip for all;
- 进入zxing-master/android,将assets文件夹复制到项目的main目录;
- 进入zxing-master/android-core/src/main/java,将com文件夹复制到项目的java目录下;此文件夹只有一个CameraConfigurationUtils.java文件,合并后将出现在com.google.zxing.client.android.camera目录下;
- 删除MainActivity.java、example.administrator.zxingdemo文件夹和对应的布局文件activity_main.xml
四、build和改错
Rebuild Project后,会提示很多资源找不到的错误
@dimen/half_padding 找不到,在res/values/dimens/dimens.xml中添加:
<dimen name="half_padding">16dp</dimen>
值任意,但建议给16dp
@color/result_view 找不到,在res/values/colors.xml中添加:
<color name="result_view">#FF4081</color>
颜色值任意
@style/ResultButton 找不到,在res/values/styles.xml中添加:
<style name="ResultButton"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> </style>
然后再Rebuild Project,若提示类似错误,就依次为例添加资源,直到Build Success;(慢慢改,错误有很多)
编译成功!会有很多警告,请忽略。
五、真机运行
打开AndroidManifest.xml,可以发现CaptureActivity是主Activity,这里是程序的入口;打开CaptureActivity,我这里172行位置:getCurrentOrientation()报错,暂时忽略;
插上USB数据线,运行到Android真机上,失败了!!!
原因很简单,是因为手机没有相机操作授权,开启权限即可;
本人用的是M6,其它手机可以参照:
- 进入设置界面,进入更多应用,选择条码扫描器;
- 进入权限管理,找到多媒体相关的相机,设置选择允许;
- 来个大返回,重新开启条码扫描器;
经测试,条码二维码都可以快速扫描识别,并在识别成功后发出提示音;好了,后面研究CaptureActivity源码就可以自定义扫描器。
六、本地语言的坑
我的手机原本使用的本地语言是English,当运行程序时就会发生运行时异常;
原因是res目录下没有English对应的语言包,切换到Project视图下,复制values-zh-rCN文件夹到同级目录下,重命名为values-en,然后打开strings.xml,修改对应的name为英文就OK了。