我一直在寻找如何将条形码扫描仪添加到我的应用程序中。有没有例子或者我怎样才能轻松做到这一点?
7 回答
ZXing 项目提供了一个独立的条形码阅读器应用程序——通过 Android 的意图机制——可以被其他希望集成条形码扫描的应用程序调用。
最简单的方法是SCAN
Intent
从您的应用程序中调用 ZXing,如下所示:
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
将直接启动到 ZXing 条码扫描仪屏幕(如果未安装 ZXing,则会崩溃)。一旦条形码被识别,您将Activity
在contents
变量中收到结果。
为了避免崩溃并为您简化事情,ZXing提供了一个实用程序类,您可以将其集成到您的应用程序中,以使 ZXing 的安装更顺畅,如果用户尚未安装它,则将其重定向到 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”项目中创建“libs”文件夹并将 cor-3.2.1.jar 粘贴到 libs 文件夹中
- 单击项目:选择“属性”->“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/”复制它并粘贴到您的项目中。
- 清理并构建项目。如果您的项目显示有关“switch - case”的错误,您应该将它们更改为“if - else”。
- 完全的。清理并构建项目。您可以单击“属性”>“Android”>单击“是库”以用于您的项目。
在我找到某个网站(我现在找不到它)之前,我在实现代码时遇到了问题,该网站解释了您需要在 intent.putExtra 的名称中包含包名称。
它会拉起应用程序,但它不会识别任何条形码,当我改变它时。
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
至
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
效果很好。只是对任何其他新手 Android 程序员的提示。
使用提供的 IntentInegrator 更好。如果他们没有条形码扫描仪,它允许您提示您的用户安装条形码扫描仪。它还允许您自定义消息。IntentIntegrator.REQUEST_CODE 常量保存 onActivityResult 的请求代码值,以在上述 if 块中检查。
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
如果你想包含在你的代码中而不是使用 ZXing 库推荐的 IntentIntegrator,你可以使用这些端口中的一些:
我用的是第一个,效果很好!它有一个示例项目可以试用。
以这种方式使用 Zxing 需要用户还安装条形码扫描仪应用程序,这并不理想。您可能想要的是将 Zxing 直接捆绑到您的应用程序中。
我强烈推荐使用这个库:https ://github.com/dm77/barcodescanner
尝试直接集成 Xzing 或 Zbar 会遇到所有疯狂的构建问题。它在幕后使用这些库,但将它们包装在一个非常简单易用的 API 中。
条码检测现在可在Google Play 服务中使用。 设置过程的代码实验室,这里是api 文档和示例项目。
您可以使用此快速入门指南http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/和简单的示例项目来构建没有 IntentIntegrator 的 android 应用程序。