Android Studio可以用两种方法实现Zxing的导入,
在需要使用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界面是横屏的,也不能修改扫描界面,所以很难满足我们的需求。
下载地址见 https://github.com/zxing/zxing/ 这是一个Google官方维护的项目,支持很多语言和多种使用环境,我们只需要下载android相关的就可以,
在project视图下,右键项目名, 选择New>Module>Import Gradle Project.然后选择下载的android文件夹。注意,此时可以给导入的外部项目修改名字,可能是官方考虑到要导入多个项目时避免名字冲突吧,我改成zxing了。
这里其实有两种方法,一是可以直接下载core-x.x.x.jar (),在外部项目中新建Libs文件夹,拷贝进去,然后add as a dependency,但是这样的很容易出错,推荐第二种
二是可以在导入的android外部项目的build,gradle中添加外部依赖 compile ‘com.google.zxing:core:x.x.x’
将 ‘com.android.application’ 改成: ‘com.android.library’ 告诉系统这个是library.
删掉 applicationId 声明.
将SdkVersion和buildToolVersion修改成跟当前app一致
将
在app下面的build.gradle文件中的依赖中添加
implementation project(’:zxing’)
告诉系统要一起编译这个外部项目
1、 常量表达式错误
在修改完build文件后,报了一个常量表达式错误的问题,发现是在各个switch语句那里,Alt+Enter 将switch case 语句改为 if else.
原因:避免多个库之间出现资源冲突 (具体可以去查阅)
2、找不到合适的匹配器
错误:对于ArrayAdapter(Context, int, ArrayList),找不到合适的构造器
看报错的最后一行,说ArrayList 无法转换成List
这是因为 文件中ArrayList<>没有指定变量类型,改为ArrayList 即可
3、找不到getStartTimeStamp(),改成getStart().getTime()即可,后者是long类型,对于getEnd()也一样