2011-11-04 149 views
16

有人可以告诉我,如果创建条码扫描器应用程序(对于Android)很困难? OpenCV库是否良好的开始?我在哪里可以找到明确说明如何阅读条形码的算法?我会很感激关于这个话题的所有好材料!如何创建条码扫描器(Android)?

在此先感谢!

+1

ZXing库能够扫描Android上的条形码。这可能是一个起点。 – Codo

回答

22

斑马线项目提供了一个独立的条形码阅读器应用程序,它 - 通过Android的意图机制 - 可谁希望集成条码扫描其他应用程序调用。

做到这一点,最简单的方法是调用斑马线SCAN意图从你的应用程序,如:

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有provided a utility class,您可以将它们集成到您的应用程序中,通过将用户重定向到Android电子市场(如果它们尚未安装),使ZXing的安装更加流畅。

最后,如果你想条形码扫描直接集成到应用程序,而无需依赖于具有安装了独立的斑马线应用程序,以及那么它是一个开源项目,你可以这样做! :)

10

您可以使用现有的适用于Android的Zebra Crossing条码扫描器,可在:http://code.google.com/p/zxing/。通常情况下,您的想法是通过intent来调用它,如下例所示:http://code.google.com/p/zxing/wiki/ScanningViaIntent

+0

比方说,我并不想用这对我做的一切,例如先进的图书馆。 – Ziem

+2

不幸的是,这个库并不特别容易被用作应用程序中包含的库jar文件,但您仍然可以手动重新打包它,并尝试仅使用您需要/想要的部分。然而,正如我所说的,它主要意味着通过意图使用,将它“嵌入”到您的应用程序中有点困难。也许有人会有不同的建议。 – ivantod

6

斑马线穿越是有史以来最好记录的java一维或二维条码解码器或编码器。许多人使用它,它已成为Android的事实标准。这里也有a healthy buzz about it

RedLaserhas an api,但如果您在生产中使用它,则必须付费。当我试用它时,我没有发现这是对斑马线的改进。当然不是为price

jjildoes barcodes但是这个项目只有3个提交者,我从来没有用过它,所以我不知道该怎么告诉你。它的source当然是可读的。

一旦你start reading,你会发现由于模糊的图像,噪声,失真,怪异的角度等等,读者是棘手的事情来实现。所以如果你想要一些可靠的东西,你可能想要一个社区维护的图书馆。