如何在不安装条码扫描应用程序的情况下使用ZXing库

7
我一直在开发一个安卓应用程序,用于扫描条形码和二维码并将结果发送到其他应用程序(HTTP)。我已经阅读了大部分的互联网文档以及stack over flow中的文档,并已经使其正常工作。我能够在我的设备上运行zxing独立的安卓应用程序,也能运行我的自己独立的安卓应用程序使用Zxing意图来扫描条形码。 但即使在这里阅读了很多问题和互联网上的一些博客,我还是没有得到满足我的严格要求。
我想实现以下几点。 1. 我不想在我的设备上安装一个单独的条形码扫描应用程序来使我的应用程序工作(扫描条形码)。 2. 我使用了以下代码
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, 0);

当我在我的设备上运行该应用程序时,它会询问“选择应用程序以完成此操作”,并显示“Google”和“Google Goggles”,并打开默认的Google页面相机并扫描条形码。我希望出现默认的CaptureActivtiy捕获页面(而不是Google的)来扫描条形码。 3. 我尝试将ZXing作为库在自己的应用程序中使用,但没有成功。
请告诉我我到底做错了什么?

2
你有查看过这个答案吗?我曾经使用它并解决了相同的问题。 - Hardik Joshi
嗨,哈迪克,谢谢你的回复。 是的,我已经去过那个页面了。我尝试过了,但是我该如何将依赖项放入我的应用程序中的zxing android项目?在这种情况下,我该如何创建intent? - Raghavendra Nilekani
1
实际上它是可以工作的,但如果我在设备中没有安装条形码扫描器应用程序,它会打开Google默认捕获页面来捕获图像,这不是我想要的。我希望Zxing的捕获页面能够来捕获图像。 - Raghavendra Nilekani
所以要补充一点,据我理解,zxing库不支持此功能。你必须使用外部应用程序或深入挖掘源代码并使用源代码来实现此效果。 - Jay Snayder
2个回答

20

2
我们可以使用 zbar 来扫描 QR 码吗?我尝试了,但不起作用。我们能不能实现这样的功能? - Raghavendra Nilekani
2
是的,当我实现时,它成功地为QR码工作。首先,只需运行示例应用程序...它应该支持QR码。 - shaonAshraf
1
是的,它起作用了。在这个例子中,相机应用程序会在一个单独的活动中启动,相机预览将显示在一个帧布局上。但我想要实现以下内容。 当我从活动内的一个方法点击按钮时,它应该打开相机并扫描,并将扫描结果传递给同一方法,以便我可以从那里继续。如何使用Zbar实现这一点? - Raghavendra Nilekani
1
回答 @RaghavendraNilekani:startActivityForResult()https://dev59.com/t2kv5IYBdhLWcg3wtS8N#10407371 - Hugo Matilla
4
需要注意的是,这个软件使用的是“GNU图书馆或较宽松的通用公共许可证2.0版(LGPLv2)”。如果您在自己的源代码中使用此软件,可能会影响您发布的内容,并强制您在整个项目上提供开源代码。因此,在专有代码中不要这样做。 - Jay Snayder
显示剩余3条评论

2
您正在展示您想通过Intent进行集成。这是推荐的方式,您可以使用IntentIntegrator更轻松地限制回复应用程序列表。只需5行代码:https://code.google.com/p/zxing/wiki/ScanningViaIntent 然而,这与您想在应用程序中实现扫描的说法相矛盾。您需要澄清您的需求。
如果是这种情况,您需要构建自己的扫描应用程序,并在android/中重复使用core.jar和可能是Barcode Scanner的一些部分。这不受支持 - 您必须自己解决问题。请不要克隆我们的应用程序。

嗨,Sean Owen 谢谢您提供的信息。我不想克隆条形码扫描应用程序。我的需求很简单,我想在不显式安装它在我的设备上使用条形码扫描应用程序。 我已经看了IntentIntegrator的方法,它明确地告诉“它处理未安装Barcode Scanner的情况”。如果未安装,则会要求从商店安装,而我不想这样做。我想将条形码扫描应用程序集成到我的应用程序中,因此我不想再次从商店安装它到我的设备上。 - Raghavendra Nilekani
嗨,Sean Owen 感谢提供的信息。我不想克隆条形码扫描应用程序。我的需求很简单,我想在不明确安装它的情况下使用条形码扫描应用程序。 我已经看过IntentIntegrator方法,它清楚地说明“它处理未安装Barcode Scanner的情况”。如果未安装,则会要求从商店安装,而我不想这样做。我想将条形码扫描应用程序集成到我的应用程序中,因此我不想再次从商店安装它到我的设备上。 非常简单的要求。 - Raghavendra Nilekani
3
我希望您能翻译以下内容:我想制作一个非常简单的安卓应用程序,利用条形码扫描API(在我的应用程序内部),而不是明确安装条形码扫描应用程序。 Translated: 我想制作一款非常简单的安卓应用程序,可以利用条形码扫描API(在我的应用程序内部使用),而无需显式地安装条形码扫描应用程序。 - Raghavendra Nilekani
@Sean,我很想听听你为什么说“请不要克隆我们的应用程序”。Apache 2.0许可证的目的不是让开发人员克隆您的代码作为他们自己应用程序的起点吗?(假设完全归属和遵守许可证)虽然通过意图扫描是一种简单的实现方式,但从用户体验的角度来看,它并不总是理想的。 - Richard Le Mesurier
1
@RichardLeMesurier Apache 2许可证不授予商标权,并发布具有相同名称和标志的混淆类似应用程序会侵犯这些权利。这不是一个理论性的问题:人们发布带有广告和恶意软件的克隆应用程序。除此之外,与在OSS之上创新相比,我个人认为复制和粘贴是令人不悦的,但这只是一个请求。这是作者有资格提出的。我完全驳斥了因为其他人克隆可能更容易或更有利可图而认为作者应该感到有义务放弃更多权利的论点。 - Sean Owen
@Sean 哇,是的,我明白了 - 完全同意。我从来没有从那个角度看过它。我的“克隆”想法更多地与使用一个开源应用程序作为构建另一个应用程序的基础有关。感谢澄清。 - Richard Le Mesurier

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