【问题标题】:android camera2 qrscanner qrcode scannerandroid camera2 qrscanner 二维码扫描仪
【发布时间】:2016-07-12 08:36:32
【问题描述】:

如何使用 android 6 创建二维码扫描器应用程序? Android 6 使用 android.hardware.camera2 来访问相机。如果我必须更新整个 ZXING 库,对于像我这样的新手来说需要很长时间。有什么简单的方法吗?

【问题讨论】:

  • ZXING 库有什么问题?我正在运行 Android 6,它运行良好。
  • 您(以及 ZXing 的扩展)仍然可以访问 Marshmellow 上的旧相机 API。为什么不使用它?
  • 我使用的是运行 android 6 的 Nexus 5X。我使用旧的 API android.hardware.Camera 来访问相机。它破坏了应用程序。在我使用新的 android.hardware.camera2 API 后,它工作正常。所以这就是为什么我不能再使用它了。

标签: android android-studio android-camera qr-code android-camera2


【解决方案1】:

您可以使用名为 Zxing 的第三方库。

您可以通过 gradle 依赖将 zxing 库添加到您的应用中

只需将其添加到您的 build.gradle 文件中

compile 'com.google.zxing:core:3.2.1'
compile 'com.journeyapps:zxing-android-embedded:3.0.3@aar'

现在在您的活动的 onCreate 方法中,执行以下操作

 IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
 scanIntegrator.setPrompt("Scan a Barcode");
 scanIntegrator.setBeepEnabled(true); 
 scanIntegrator.setOrientationLocked(true);
 scanIntegrator.setBarcodeImageEnabled(true);
 scanIntegrator.initiateScan();

你可以找到一个示例项目here

【讨论】:

  • 我试过这个。它几乎可以工作。好吧,基本上是因为我猜错误有一个例外,所以APP不会中断。它说:对不起,Android 相机遇到问题。您可能需要重新启动设备。在此之后,我尝试运行相机(来自谷歌的相机应用程序)并且它工作正常。我也尝试了使用 camera2-basic 的相机,它也可以正常工作。
  • 尝试添加 并将您的目标 sdk 版本设置为 22
  • 有效!注意:我已经将 放在清单上。它仍然会产生错误。在我将 build.gradle 上的目标 sdk 从 23 更改为 22 之后,它就可以工作了。这是为什么?在此之后,我再次将目标 sdk 从 22 更改为 23。 APP也可以。我可以使用 zxing 扫描 qrcode。这是为什么?是因为我的项目缺少在我使用目标 SDK 23 时不是由 IDE 生成的东西,而它是在我使用目标 SDK 22 时以某种方式生成的吗?这解决了我的问题,谢谢,但它没有回答问题。