我一直在寻找如何在我的应用中添加条形码扫描仪。有没有例子或我怎么能这么做?
答案 0 :(得分:208)
ZXing项目提供了一个独立的条形码阅读器应用程序 - 通过Android的意图机制 - 可以被其他希望集成条形码扫描的应用程序调用。
最简单的方法是从您的应用中调用ZXing SCAN
Intent
,like this:
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您可以将其集成到您的应用程序中,以便在没有它的情况下将用户重定向到Android Market,从而使ZXing的安装更加顺畅已安装。
最后,如果您想将条形码扫描直接集成到您的应用程序中而不依赖于安装单独的ZXing应用程序,那么它就是一个开源项目,您可以这样做! :)
编辑:有人编辑本指南进入这个答案(听起来有点奇怪,我不能保证其准确性,我不确定为什么他们在2015年使用Eclipse ):
在eclipse中逐步设置zxing 3.2.1
答案 1 :(得分:41)
我在实现代码时遇到了问题,直到我找到了一些网站(我现在无法再找到它),这说明你需要在intent.putExtra的名称中包含软件包名称。
它会启动应用程序,但它不会识别任何条形码,当我更改它时。
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
到
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
效果很好。对于任何其他Android新手程序员来说,这只是一个提示。
答案 2 :(得分:23)
使用提供的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
答案 3 :(得分:11)
如果要包含在代码中而不使用ZXing库推荐的IntentIntegrator,可以使用以下某些端口:
我使用第一个,它完美无缺!它有一个试用它的示例项目。
答案 4 :(得分:10)
使用Zxing这种方式需要用户也安装条形码扫描仪应用程序,这是不理想的。你可能想要的是直接将Zxing捆绑到你的应用程序中。
我强烈建议您使用此库:https://github.com/dm77/barcodescanner
您需要尝试直接集成Xzing或Zbar的所有疯狂构建问题。它使用了这些库,但是将它们包装在一个非常简单易用的API中。
答案 5 :(得分:5)
条形码检测现已在Google Play services中提供。 Code lab设置过程中,api docs和sample project。
答案 6 :(得分:3)
您可以使用此快速入门指南http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/与简单的示例项目来构建没有IntentIntegrator的Android应用程序。