【发布时间】:2011-12-21 23:58:04
【问题描述】:
谁能告诉我创建条形码扫描仪应用程序(适用于 Android)是否困难? OpenCV 库是好的开始吗?我在哪里可以找到清楚地解释如何读取条形码的算法?我会感谢所有关于这个主题的好材料!
提前致谢!
【问题讨论】:
-
ZXing 库可以在 Android 上扫描条码。这可能是一个起点。
标签: java android barcode barcode-scanner
谁能告诉我创建条形码扫描仪应用程序(适用于 Android)是否困难? OpenCV 库是好的开始吗?我在哪里可以找到清楚地解释如何读取条形码的算法?我会感谢所有关于这个主题的好材料!
提前致谢!
【问题讨论】:
标签: java android barcode barcode-scanner
您可以使用现有的 Android 版 Zebra Crossing 条码扫描器,网址为:http://code.google.com/p/zxing/。通常的想法是您可以通过意图调用它,例如此处的示例:http://code.google.com/p/zxing/wiki/ScanningViaIntent。
【讨论】:
Zebra Crossing 是最好的 java 1D 或 2D 条形码解码器或编码器。很多人都在使用它,它已经成为安卓的事实标准。这里也有a healthy buzz about it。
RedLaser has an api,但如果您在生产中使用它,则需要付费。当我试用它时,我并没有发现它比 Zebra Crossing 有惊人的改进。当然不是price。
jjil does barcodes 但该项目只有 3 个提交者,而且我自己从未使用过它,所以我不知道该告诉你什么。它的source 肯定是可读的。
一旦您start reading,您会发现由于图像模糊、噪点、失真、奇怪的角度等等,读者很难实现。因此,如果您想要可靠的东西,您可能想要使用社区维护的库。
【讨论】:
ZXing 项目提供了一个独立的条形码阅读器应用程序——通过 Android 的 Intent 机制——可以被其他希望集成条形码扫描的应用程序调用。
最简单的方法是从您的应用程序中调用 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 提供了provided a utility class,您可以将其集成到您的应用程序中,以使 ZXing 的安装更顺畅,如果用户尚未安装它,则将其重定向到 Android Market .
最后,如果您想将条码扫描直接集成到您的应用程序中,而不需要安装单独的 ZXing 应用程序,那么它是一个开源项目,您可以这样做! :)
【讨论】:
您可以使用 zbar 库。从以下位置下载: http://sourceforge.net/projects/zbar/files/AndroidSDK/
我觉得这个比zxing更快更准确。
【讨论】: