将 zxing 条码扫描器嵌入到活动中

Posted

技术标签:

【中文标题】将 zxing 条码扫描器嵌入到活动中【英文标题】:Embed zxing barcode scanner to the activity 【发布时间】:2013-03-08 01:54:31 【问题描述】:

我正在编写 android 应用程序,我的客户端需要一个条形码扫描仪。他们真的很具体,所以他们想要的布局是这样的:

如果找到二维码 - 它会自动跳转到另一个窗口。如果手动按下 - 您将被要求手动输入并继续应用程序的其余部分。

所以基本上我可以将 zxing 代码嵌入到我的应用程序中并将其添加到活动中,但我不希望这样做并且希望将它作为一个单独的应用程序。

我目前拥有的是一个单独的活动,如下所示:

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.initiateScan();

我也试过这个:

IntentIntegrator intentIntegrator = new IntentIntegrator(this);
Intent i = intentIntegrator.initiateCustomScan();

LocalActivityManager mgr = getLocalActivityManager();

Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;

if(wd != null) 
  scanButton.addView(wd);

然后我得到 java.lang.SecurityException:

03-19 12:22:55.890: E/AndroidRuntime(29394): java.lang.RuntimeException: Unable to start activity ComponentInfocom.menucard.barcode.scan/com.barcode.scan.ScanActivity: java.lang.SecurityException: Requesting code from com.google.zxing.client.android (with uid 10139) to be run in process com.menucard.barcode.scan (with uid 10169)

也许有人知道如何将单独的应用添加到我的活动中?或者其他方式来实现这一点?

【问题讨论】:

既然 zxing 是开源的,你可以使用他们的代码并创建自己的视图......为什么要使用他们现有的应用程序? 首先他们自己不推荐它,我明白为什么。通过这种方式,我只会专注于链接到他们的应用程序,而不是整个应用程序。如果他们更新了一些东西,我也会得到最新的更新(当然如果用户决定更新条形码扫描仪应用程序)。 如果您需要自定义扫描屏幕,那么我认为使用他们的代码并创建自己的布局将是一个好主意,因为您无法更改其他应用程序的视图... 【参考方案1】:

很遗憾,您无法通过Intent 将外部应用嵌入到另一个应用中。这里的外部应用程序需要占据整个屏幕,并且是横向模式,对于初学者来说。

您应该编写自己的应用程序,但可以在您的应用程序中重复使用 Barcode Scanner 的部分内容,这样它就不会完全从头开始。请不要复制AndroidManifest.xml 文件。我认为考虑到不同的用户界面,它也不会与条形码扫描仪混淆。剩下的就是确保您遵守 Apache 许可证的条款(简单)。

【讨论】:

+1 是的,我想过编写自己的扫描应用程序,你能指导我应该参考哪个特定的文件文件夹吗?是 CaptureActivity.java 吗?到目前为止,我已经设法将整个源代码移植到我的项目中,这只是为了学习目的,我无意复制,因为我对 android 开发完全陌生。 我不能鼓励你从复制应用开始。首先编写您自己的应用程序,除了扫描之外的所有内容。除非您具备这样的知识水平,否则无论如何您都不会知道如何使用 Barcode Scanner 源。【参考方案2】:

@MindaugasSvirskas,你的最后一条评论正是我现在要发布的内容:-) 我过去在几个应用程序中遇到过同样的问题,相信我,只要使用 Intents,就是这样Android系统设计,有利于应用程序之间的互通。 ios 程序员可以轻松地将扫描 Zxing 布局集成到他们自己的布局中,但我们应该使用 Intent,我同意。

【讨论】:

以上是关于将 zxing 条码扫描器嵌入到活动中的主要内容,如果未能解决你的问题,请参考以下文章

Android zxing Journeyapps 条码扫描器内部片段

如何将 ZXing 库集成到 Android Studio 进行条码扫描?

Xamarin Android Fragment ZXing - ClassCastException

在安卓应用中嵌入 ZXing

android中zxing扫描条码没有声音

如何将 PageRenderer/Fragment/View 中的 ZXing 扫描仪嵌入 Xamarin.Forms ContentPage?