如何将ZXING导入到Android Studio?

15

我使用 Android Studio 我想在我的应用程序中导入 'ZXING',我找到了许多文章并找到了以下网站

https://github.com/zxing/zxing/

我下载了 ZIP 并解压缩,找到一些教程 但它似乎没有太详细的细节,我需要导入什么?以实现 QRCode 扫描

我仍然不知道该如何做


4/14 我试过 Lennon 提供的 URL "zxing-android-minimal" 并导入了 'gradle-wrapper.jar'

但当我写了 new IntentIntegrator (this) .initiateScan (); 仍然出现 "Can not resolve symbol 'IntentIntegrator" 信息

https://www.dropbox.com/s/2srga9iq75iqe4m/%E8%9E%A2%E5%B9%95%E6%88%AA%E5%9C%96%202015-04-10%2001.33.56.png?dl=0

我已正确选择'.jar'并将其添加为库 但当错误发生时,它似乎没有被添加


4/10

最终不再出现 "Can not resolve symbol 'IntentIntegrator" 这是代码,我做错了什么?

我删除了新的 IntentIntegrator(this).initiateScan(); 后,应用程序正常运行

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new IntentIntegrator(this).initiateScan();
}

我的 'build.gradle'

    repositories {
    jcenter()
    maven {
        url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
    }
}

你不应该将任何东西“导入”到你的项目中。通过Maven使用核心库。不要将android复制到你的项目中。你遇到了麻烦,因为这不是你预期使用它的方式。 - Sean Owen
你的意思是,我实际上不需要将任何文件导入到我的项目中吗? - AM031447
5个回答

14
你应该在 build.gradle 文件中定义你的 zxing 依赖项:
repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.google.zxing:core:3.2.0'
}

这是核心条形码编解码库,您可以使用它来构建自定义的条形码扫描器/生成器应用程序。

如果您只需要支持简单的条形码扫描情况,您可以使用ZXing Android Embedded 项目嵌入ZXing Android条形码扫描器应用程序。

这是将ZXing Android Barcode Scanner 应用程序移植为Android库项目,并嵌入到其他Android应用程序中。

如果您决定使用ZXing Android Embedded项目,则只需在build.gradle文件中定义您的依赖关系即可:

repositories {
    mavenCentral()

    maven {
        url "http://dl.bintray.com/journeyapps/maven"
    }
}

dependencies {
    implementation 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
    implementation 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
    implementation 'com.journeyapps:zxing-android-integration:2.3.0@aar'
    implementation 'com.google.zxing:core:3.2.0'
}

使用默认选项启动意图:

new IntentIntegrator(this).initiateScan(); // `this` is the current Activity

获取您的结果:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    switch (requestCode) {
    case IntentIntegrator.REQUEST_CODE:
        if (resultCode == Activity.RESULT_OK) {
            // Parsing bar code reader result
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        }
        break;
    }
}

9
我使用zxing库开发应用程序时遇到了许多问题。因此,请查看这个最小的zxing示例:https://github.com/Promptus/zxing-android-minimal/tree/master它对我非常有效且更易于实现。
编辑您项目中的以下文件:/gradle/wrapper/gradle-wrapper.properties。编辑distributionUrl行并将其设置为:
distributionUrl=http://services.gradle.org/distributions/gradle-1.8-all.zip 重新构建您的项目。更新:现在您可能需要使用gradle-2.1-all.zip。
首先,您必须删除 libs 文件。然后,您必须删除
mavenCentral()
    maven {
        url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
    }

从你的MyApplicationbuild.gradle中获取,因为该gradle适用于整个项目,最好在每个模块中使用它。
之后,打开模块appbuild.gradle并添加以下代码:
repositories {
    mavenCentral()

    maven {
        url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'

    // Zxing libraries
    compile 'com.embarkmobile:zxing-android-minimal:2.0.0@aar'
    compile 'com.embarkmobile:zxing-android-integration:2.0.0@aar'
    compile 'com.google.zxing:core:3.0.1'

}

最后,您需要从项目中删除google.zxing.integration.android,否则在编译时会出现错误。
更新:
为了解决返回按钮的问题,您可以使用以下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {

        String _code = data.getStringExtra("SCAN_RESULT");

        // do whatever you want

    }

}

谢谢您。 我还在尝试中。 我已经导入了gradle-wrapper.jar。 我按照说明操作,但仍然出现“无法解析符号'IntentIntegrator'”的错误。 (已在build.gradle中添加) - AM031447
我发现如果我没有捕获返回按钮,应用程序会关闭,有什么解决办法吗? - AM031447
@Lennon:不好意思,兄弟。使用ZXing-Android-Minimal,是否可以将Zxing扫描仪添加到活动的自定义布局中?非常感谢! - Neo
@Lennon:抱歉给您带来不便,您能否帮我解决这个问题:https://dev59.com/k1wY5IYBdhLWcg3wcHXZ! - Neo
@MrNeo 当然了伙计。我会尽力的。 - Lennon Spirlandelli
显示剩余15条评论

5
在您的根构建文件(root-build.gradle)中:
repositories {
   mavenCentral()

   maven {
      url "http://dl.bintray.com/journeyapps/maven"
   }
}

在你的app-build.gradle文件中:

dependencies {
    // Supports Android 4.0.3 and later (API level 15)
    compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
    compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar'

    // Convenience library to launch the scanning Activities.
    // It automatically picks the best scanning library from the above two, depending on the
    // Android version and what is available.
    compile 'com.journeyapps:zxing-android-integration:2.3.0@aar'

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
    // This mostly affects encoding, but you should test if you plan to support these versions.
    // Older versions e.g. 2.2 may also work if you need support for older Android versions.
    compile 'com.google.zxing:core:3.2.0'
}

更多信息可以在这里找到:https://github.com/journeyapps/zxing-android-embedded


3

我遇到了同样的问题,但我通过以下简单步骤解决了它:

使用选项导入项目(Eclipse ADT、Gradle等)从下载的zxing-master zip文件中导入android项目,并在您应用程序的级别的build.gradle文件中添加以下2行代码,然后你就可以运行了。

如此简单,是的...

dependencies {
        // https://mvnrepository.com/artifact/com.google.zxing/core
        compile group: 'com.google.zxing', name: 'core', version: '3.2.1'
        // https://mvnrepository.com/artifact/com.google.zxing/android-core
        compile group: 'com.google.zxing', name: 'android-core', version: '3.2.0'

    }

您可以通过以下链接随时找到最新版本的 coreandroid corehttps://mvnrepository.com/artifact/com.google.zxing/core/3.2.1 https://mvnrepository.com/artifact/com.google.zxing/android-core/3.2.0

这似乎是截至2017年7月的当前版本的更相关答案。 - zeeshan

1
在Lennon解释的所有步骤之后,我通过进入Android Studio终端并键入gradlew assemble解决了“无法解析符号'IntentIntegrator'”问题。花费了一些时间,但现在我可以使用aar中声明的所有类。
希望这能有所帮助。

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