使用ZXing创build一个Android条码扫描应用程序
我一直在寻找如何添加条形码扫描仪到我的应用程序。 有谁知道任何例子或知道如何轻松做到这一点?
ZXing项目提供了一个独立的条形码阅读器应用程序,通过Android的意图机制,可以由其他希望集成条形码扫描的应用程序调用。
最简单的方法是从您的应用程序中调用ZXing SCAN
Intent
, 如下所示 :
public Button.OnClickListener mScan = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); } }; public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) { String contents = intent.getStringExtra("SCAN_RESULT"); String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Handle successful scan } else if (resultCode == RESULT_CANCELED) { // Handle cancel } } }
按下连接到mScan
的button将直接进入ZXing条码扫描器屏幕(如果没有安装ZXing,则会崩溃)。 一旦条形码被识别出来,你就会在你的Activity
收到结果,这里是contents
variables。
为了避免崩溃和简化您的操作,ZXing 提供了一个实用程序类 ,您可以将它们集成到您的应用程序中,以使ZXing的安装更加stream畅,如果用户没有安装,可以将其redirect到Android Market。
最后,如果您想要将条形码扫描直接集成到您的应用程序中,而不依赖于安装单独的ZXing应用程序,那么这是一个开源项目,您可以这样做! 🙂
编辑:有人编辑这个指南到这个答案(这听起来有点奇怪,我不能保证其准确性,我不知道为什么他们在2015年使用Eclipse):
在eclipse中一步步设置zxing 3.2.1
- 从“ https://github.com/zxing/zxing ”下载zxing-master.zip
- 解压zxing-master.zip,使用eclipse导入zxing-master中的“android”项目
- 从“ http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ ”下载core-3.2.1.jar
- 在“android”项目中创build“libs”文件夹,并将cor-3.2.1.jar粘贴到libs文件夹中
- 点击项目:select“属性” – >“Java编译器”将级别更改为1.7。 然后点击“Android”将“Project build target”更改为android 4.4.2+,因为使用1.7需要使用Android 4.4编译
- 如果“zxing-master / android / app / src / main / java / com / google / zxing / client / android / camera /”中不存在“CameraConfigurationUtils.java”。 你可以从“zxing-master / android-core / src / main / java / com / google / zxing / client / android / camera /”复制它并粘贴到你的项目中。
- 清理并build立项目。 如果你的项目显示“switch-case”错误,你应该把它们改成“if-else”。
- 已完成。 清理并build立项目。 你可以点击“Proprties”>“Android”>点击“Is Libraries”用于你的项目。
直到我find一些网站(我现在再也找不到它了)之前,我在代码中存在一个问题,那就是你需要在intent.putExtra的名字中包含包名。
它会拉起应用程序,但不会识别任何条形码,当我改变它。
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
至
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
它运作良好。 只是一个小费,任何其他新手ororid程序员。
使用提供的IntentInegrator更好。 它允许您提示您的用户安装条形码扫描仪,如果他们没有它。 它也允许你自定义消息。 IntentIntegrator.REQUEST_CODE常量保存onActivityResult的请求代码的值,以便在上面的块中检查。
IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR
IntentIntegrator.java
如果你想包含在你的代码中,而不是使用Zxing库推荐的IntentIntegrator,你可以使用其中的一些端口
http://code.google.com/p/android-zxinglib/
http://code.google.com/p/android-quick-response-code/
我用第一,完美的作品! 它有一个示例项目来尝试它
使用Zxing这种方式需要用户也安装条码扫描器应用程序,这是不理想的。 你可能想要的是直接将Zxing捆绑到你的应用程序中。
我强烈build议使用这个库: https : //github.com/dm77/barcodescanner
它需要你试图直接集成Xzing或Zbar的所有疯狂的构build问题。 它使用这些封装下的库,但将它们封装在一个非常简单的API中。
条码检测现已在Google Play服务中提供 。 设置过程的代码实验 ,这里是api文档和一个示例项目 。