Android集成Zxing实现二维码扫描识别,过程、常见错误及修改
Android Studio可以用两种方法实现Zxing的导入,
第一种方法:直接implementation
在需要使用zxing进行二维码扫描的app的build.gradle直接添加依赖:
implementation 'com.journeyapps:zxing-android-embedded:2.3.0@aar'implementation 'com.journeyapps:zxing-android-legacy:2.3.0@aar'implementation 'com.journeyapps:zxing-android-integration:2.3.0@aar'implementation 'com.google.zxing:core:3.2.0'
其实可以添加成com.google.zxing:core:x.x.x的形成,AS会自动搜索最新版本,帮助我们修改成最新版的
然后使用startActivityForResult的方法就可以启动了
Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);intent.setAction("com.google.zxing.client.android.SCAN");intent.putExtra("SAVE_HISTORY", false);startActivityForResult(intent, 0);
但是,这样启动的CaptureActivity界面是横屏的,也不能修改扫描界面,所以很难满足我们的需求。
第二种方法:添加外部依赖项目
1) 下载Zxing源码
下载地址见 https://github.com/zxing/zxing/ 这是一个Google官方维护的项目,支持很多语言和多种使用环境,我们只需要下载android相关的就可以,
2) 导入外部依赖项目
在project视图下,右键项目名, 选择New>Module>Import Gradle Project.然后选择下载的android文件夹。注意,此时可以给导入的外部项目修改名字,可能是官方考虑到要导入多个项目时避免名字冲突吧,我改成zxing了。
3) 添加core库
这里其实有两种方法,一是可以直接下载core-x.x.x.jar (),在外部项目中新建Libs文件夹,拷贝进去,然后add as a dependency,但是这样的很容易出错,推荐第二种
二是可以在导入的android外部项目的build,gradle中添加外部依赖 compile ‘com.google.zxing:core:x.x.x’
4) 修改外部导入项目的属性
将 ‘com.android.application’ 改成: ‘com.android.library’ 告诉系统这个是library.
删掉 applicationId 声明.
将SdkVersion和buildToolVersion修改成跟当前app一致
5) 修改导入项目的manifest.xml,
将 删去category android:name=“android.intent.category.LAUNCHER”
6) 添加对导入项目的依赖
在app下面的build.gradle文件中的依赖中添加
implementation project(’:zxing’)
告诉系统要一起编译这个外部项目
3 添加外部项目时的常见错误
1、 常量表达式错误
在修改完build文件后,报了一个常量表达式错误的问题,发现是在各个switch语句那里,Alt+Enter 将switch case 语句改为 if else.
原因:避免多个库之间出现资源冲突 (具体可以去查阅)
2、找不到合适的匹配器
错误:对于ArrayAdapter(Context, int, ArrayList),找不到合适的构造器
看报错的最后一行,说ArrayList 无法转换成List
这是因为 文件中ArrayList<>没有指定变量类型,改为ArrayList 即可
3、找不到getStartTimeStamp(),改成getStart().getTime()即可,后者是long类型,对于getEnd()也一样
最后,改成竖屏
在manifest里修改(CaptureActivity就是要调用的类),sensorPortrait即可
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android(安卓)Hello Word
- Android(安卓)HttpPost表单访问接口
- eclipse3.7 INDIGO安装adt 缺少条目时的解决办法
- android枚举的替代(官方建议)
- 圆形ImageView
- Android(安卓)Studio gradle配置实践
- OpenCV4Android(安卓)不需要安装OpenCVManager,就可以运行的方法