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,

将 <application…中,删去 android:icon… 、android:logo…
删去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即可
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值