【问题标题】:QR code scanning二维码扫描
【发布时间】:2011-10-10 14:10:55
【问题描述】:

我已经根据Integrating the ZXing library directly into my Android application的帖子添加了ZXing的核心jar文件

在我的应用程序中,我正在尝试创建一个根据帖子启动 QR 阅读器的意图 QR code scanner

但是我在 core.jar 中找不到 CaptureActivity 类?

如何在不使用任何外部应用程序的情况下在我的应用程序中读取二维码?

谢谢, 艾尔。

【问题讨论】:

    标签: android qr-code zxing


    【解决方案1】:

    CaptureActivity 应该在那里,只是如果你想运行它,你仍然必须将它添加到 AndroidManifest.xml,因为它不会从 jar 中继承。添加此 XML

    <activity android:name="com.google.zxing.client.android.CaptureActivity"
    android:screenOrientation="landscape"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:windowSoftInputMode="stateAlwaysHidden">
    <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    <intent-filter>
      <action android:name="com.google.zxing.client.android.SCAN"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    </activity>
    

    参考:http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

    (是的,我自己试过了)

    还要确保你有

    <uses-permission android:name="android.permission.CAMERA"/>
    

    【讨论】:

    • 嗨。感谢您的回复。我试图将它添加到我班级的导入部分,但找不到它。
    • CaptureActivity 不在 core.jar 中。它是 android/ 的一部分,不应被复制。
    【解决方案2】:

    你做的一切都是正确的——除了你不应该使用CaptureActivity。找不到它,因为它不是 core/ 库的一部分,而是 android/ 的一部分,它是我们的应用程序 Barcode Scanner 的源代码。我建议不要直接重用我们的代码,因为你必须复制很多才能让它工作,而大多数走这条路的人只是复制几乎所有东西,这是不行的。

    您需要编写自己的应用程序。查看android/ 中的代码如何调用DecodeHandler 中的核心库进行解码。您可以查看我们的AndroidManifest.xml 以了解如何声明您的意图。您不需要也不应该复制我们的CaptureActivity。它是为了好主意,而不是克隆。

    【讨论】:

    • 你可以在zxing的项目偏好中勾选“is library”,只要它在你的workspace中,然后从你的其他项目链接到它。一旦你建立了这个关联(并将它添加到你其他项目的 AndroidManfest.xml 中),它就会起作用。无需重写您自己的 CaptureActivity。我以前做过这个工作。