如何创建条码扫描器(Android)?

17

有人能告诉我制作Android上的条码扫描应用程序难吗? OpenCV库是一个好的起点吗?我在哪里可以找到清晰解释如何读取条形码的算法?我将感激关于这个主题的所有好材料!

提前致谢!


1
ZXing库能够在安卓上扫描条形码。这可能是一个起点。 - Codo
4个回答

26

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中收到结果,这里是在内容变量中。

为了避免崩溃并简化操作,ZXing提供了一个实用程序类,您可以将其集成到应用程序中,以使ZXing的安装更加顺畅,通过将用户重定向到Android Market,如果他们尚未安装它。

最后,如果您想将条形码扫描直接集成到应用程序中,而不依赖于单独的ZXing应用程序,则它是一个开源项目,您可以这样做! :)


10

假设我不想使用那些为我完成所有事情的高级库。 - Ziem
2
不幸的是,这个库不太友好,不能被用作应用程序中所包含的库jar文件。但是,您仍然可以手动“重新打包”它,并尝试仅使用您需要/想要的部分。然而,正如我所说的,它主要是通过意图来使用的,将其“嵌入”到您的应用程序中会有点困难。也许有人会有不同的建议。 - ivantod

6

Zebra Crossing 是最好的文档化的java 1D或2D条形码解码器或编码器。许多人使用它,它已成为Android的事实标准。这里也有关于它的良好反响

RedLaser有一个api,但如果您在生产中使用它,则需要付费。当我试用它时,我没有发现它比Zebra Crossing有什么显著的改进。特别是考虑到价格

jjil 可以生成条形码,但该项目只有3个贡献者,我从未使用过它,因此无法告诉您更多信息。它的源代码确实易读。

一旦你开始阅读,你会发现由于模糊图像、噪音、畸变、奇怪的角度等因素,阅读器是难以实现的。因此,如果你想要可靠的东西,最好选择一个由社区维护的库。

5

你能帮我回答我的问题吗? - AMH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接