使用ZXing创建Android条码扫描应用程序[重复]
-
20-09-2019 - |
题
这个问题在这里已经有答案了:
我一直在寻找如何将条形码扫描仪添加到我的应用程序中。有没有例子或者我怎样才能轻松做到这一点?
解决方案
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
将直接启动到 ZXing 条码扫描仪屏幕(如果未安装 ZXing,则崩溃)。识别条形码后,您将在您的帐户中收到结果 Activity
, ,这里在 contents
多变的。
为了避免崩溃并为您简化事情,ZXing 有 提供了一个实用程序类 您可以将其集成到您的应用程序中,通过将用户重定向到 Android Market(如果尚未安装)来使 ZXing 的安装更加顺利。
最后,如果您想将条形码扫描直接集成到您的应用程序中,而不依赖于安装单独的 ZXing 应用程序,那么它是一个开源项目,您可以这样做!:)
编辑: 有人将此指南编辑为这个答案(听起来有点奇怪,我不能保证其准确性,而且我不确定他们为什么在 2015 年使用 Eclipse):
在eclipse中一步步设置zxing 3.2.1
- 从“下载zxing-master.zip”https://github.com/zxing/zxing"
- 解压zxing-master.zip,使用eclipse导入zxing-master中的“android”项目
- 从“下载 core-3.2.1.jarhttp://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
- 在“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”。
- 完全的。清理并构建项目。您可以单击“Proprties”>“Android”>单击“Is Libraries”以用于您的项目。
其他提示
我在实现代码时遇到了问题,直到我发现一些网站(我现在无法再次找到它)解释说您需要在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 需要用户还安装条形码扫描仪应用程序,这并不理想。您可能想要的是将 Zxing 直接捆绑到您的应用程序中。
我强烈推荐使用这个库: https://github.com/dm77/barcodescanner
它解决了您在尝试直接集成 Xzing 或 Zbar 时会遇到的所有疯狂的构建问题。它在幕后使用这些库,但将它们包装在一个非常简单易用的 API 中。
如果您想包含到代码中而不使用 ZXing 库推荐的 IntentIntegrator,则可以使用以下一些端口:
我用的是第一个,效果很好!它有一个示例项目可供尝试。
条形码检测现已推出 Google Play 服务. 代码实验室 设置过程,这里是 API文档, ,和一个 示例项目.
您可以使用此快速入门指南 http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ 使用简单的示例项目来构建没有 IntentIntegrator 的 Android 应用程序。