您的位置:首页 > 移动开发 > Android开发

Android studio 使用Zxing二维码扫描,过程及问题汇总

2016-08-19 10:52 423 查看
本文讲了Android studio 导入zxing的两种方法,仅供参考。

1.直接complie导入

1.1 在需要使用zxing进行二维码扫描的项目的build.gradle直接complie

compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
compile 'com.journeyapps:zxing-android-integration:2.3.0@aar'
compile 'com.google.zxing:core:3.2.0'


1.2 调用:

IntentIntegrator integrator=new         IntentIntegrator(MainActivity.this);
integrator.initiateScan();


1.3 回调结果:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult scanResult =IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
if (scanResult !=null){
String result=scanResult.getContents();
Toast.makeText(this,result,Toast.LENGTH_LONG).show();
}
}


到这里 就可以看到扫描二维码的界面和得到扫描结果了,但是这种直接compile的方法,不能改变扫描界面是横屏的情况。

2.将Module改成library,并修改成竖屏

2.1 github上下载好zxing源码。https://github.com/zxing/zxing

将源码里的android项目导入



在build.gradle修改



在manifest里修改(CaptureActivity就是要调用的类)



2.2 问题1 常量表达式错误

在修改完build文件后,报了一个常量表达式错误的问题,发现是在各个switch语句那里,Alt+Enter 将switch case 语句改为 if else.

原因:避免多个库之间出现资源冲突 (具体可以去查阅)



问题2 Manifest问题

因为我们是将一个Module直接改成library,所以要把相同的属性删掉,类似 android:icon,andoid:label,IntentFileter等都要删除。

2.3 在自己的项目中引用

compile project(':android')


扫描界面的各个view都可以在CaptureActivity中修改。



调用结果



心得:这几天为了弄这个,真是翻遍墙里墙外,每天都处于煎熬中,有时候真想有个大神指导就好了,分分钟就能解决这些问题。

好吧,还是得靠自己,加油。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息