How to import ZXING to android studio?
Solution 1
I had many troubles when I developed my app using zxing library. So take a look this zxing minimal: https://github.com/Promptus/zxing-android-minimal/tree/master
It worked perfectly to me and was easier to implement.
EDIT:
Open up this file in your project:
/gradle/wrapper/gradle-wrapper.properties
Edit the distributionUrl line and set it too:
distributionUrl=http://services.gradle.org/distributions/gradle-1.8-all.zip Rebuild your project.
Update: You might want to use gradle-2.1-all.zip now.
NEW EDIT:
First of all, you must remove your libs
file. Then you have to remove
mavenCentral()
maven {
url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
}
from your build.gradle
of MyApplication
, because that gradle is for the whole project, and it's better you use it in each module.
After that, open the build.gradle
of the module app
and add the following code:
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'
}
And finally, you need to delete google.zxing.integration.android
from your project, otherwise, an error will show up when you compile.
UPDATE:
To resolve the back button problem, you can do the following code:
@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
}
}
Solution 2
You should define your zxing dependency in build.gradle file:
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.zxing:core:3.2.0'
}
This is the Core barcode encoding/decoding library which you can use to build your custom barcode scanner/generator app.
If you need to support just a simple case of scanning the barcode you can embed ZXing Android Barcode Scanner application using ZXing Android Embedded project.
This is a port of the ZXing Android Barcode Scanner application as an Android library project, for embedding in other Android applications.
If you decide to use the ZXing Android Embedded project it's as easy as defining your dependencies in build.gradle file:
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'
}
Launch the intent with the default options:
new IntentIntegrator(this).initiateScan(); // `this` is the current Activity
And get your result:
@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;
}
}
Solution 3
In your root-build.gradle:
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
An in your 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'
}
More information could be found here: https://github.com/journeyapps/zxing-android-embedded
Solution 4
I was also encountered with same issue and I resolved it by following the simple steps as shown below:
Import the project android
from downloaded zxing-master
zip file using option Import project (Eclipse ADT, Gradle, etc.)
and add the dollowing 2 lines of codes in your app level build.gradle
file and and you are ready to run.
So simple, yahh...
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'
}
You can always find latest version core
and android core
from below links:
https://mvnrepository.com/artifact/com.google.zxing/core/3.2.1 https://mvnrepository.com/artifact/com.google.zxing/android-core/3.2.0
Solution 5
After all the steps explained by Lennon, i resolve the problem of "Can not resolve symbol 'IntentIntegrator'" by going to the terminal on Android Studio and typed gradlew assemble. It took for a while but now i can use all of the classes declared on the aar.
Hope it helped.
Related videos on Youtube
AM031447
Updated on July 09, 2022Comments
-
AM031447 almost 2 years
I use android studio I want to import 'ZXING' in my application, I find many articles and found the following site
https://github.com/zxing/zxing/
I downloaded the ZIP and unzip, and find some tutorials But it does not seem to be too detailed about the details, what I need to import? To achieve QRCode scan
I still have no idea how to do it
4/14 I tried Lennon URL provided "zxing-android-minimal" And import the 'gradle-wrapper.jar'
But when I wrote new IntentIntegrator (this) .initiateScan (); Still appear "Can not resolve symbol 'IntentIntegrator" message
I do have a right '.jar select Add As Library But when an error occurs, he does not seem to be added
4/10
Finally no longer appear "Can not resolve symbol 'IntentIntegrator" this is the code,What do I wrong?
I removed the new IntentIntegrator (this) .initiateScan (); 'applications normal operation
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new IntentIntegrator(this).initiateScan(); }
my 'build.greadle'
repositories { jcenter() maven { url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" } }
-
AM031447 about 9 yearsThank u I'm still trying I imported gradle-wrapper.jar I according to the instructions, but still appears Can not resolve symbol 'IntentIntegrator' (Already added in build.gradle)
-
Lennon Spirlandelli about 9 yearsDid you added the
maven
repositorie? Such as :repositories { mavenCentral() maven { url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" } }
-
AM031447 about 9 yearsYes, I have to add the phrase And, there have been other mistakes when adding content dependencies {}, I will take a picture of the update in the article
-
Lennon Spirlandelli about 9 yearsYou are using a gradle-wrapper.jar version that doesn't contain the command
compile()
. So you must use a new version instead. By the way, you don't need to putcompile 'com.embarkmobile:zxing-android-legacy:2.0.0@aar'
and I also think you don't need to use gradle-wrapper.jar, cause you already have gradle installed. -
AM031447 about 9 yearsis wrapper folder where gradle-wrapper.jar old it? where can i find new version?
-
Lennon Spirlandelli about 9 yearsWhen you create a new project at Android Studio, it has the gradle already installed
-
AM031447 about 9 yearsHow do I solve this problem? I mean, "Can not resolve symbol 'IntentIntegrator"
-
Lennon Spirlandelli about 9 yearsThat error means you didn't install the zxing library correctly. And you'll only manager to install after updating your gradle. If I were you I tried to create a new project in the Android Studio and tried to install again the zxing library I sent to you
-
AM031447 about 9 yearsThank you, I keep try But always an error ,I guess I do not know how to properly install zxing library ,Still thank you for helping me
-
AM031447 about 9 yearsThank you, 'Can not resolve symbol' IntentIntegrator issue is resolved But I ran '' new IntentIntegrator (this) .initiateScan (); "he still stopped
-
Lennon Spirlandelli about 9 yearsTry to trigger that code in a button and be careful with
this
in the button. Change it toNameOfActivity.this
. Otherwise, you can send me your project to me, so I could take a look -
AM031447 about 9 yearsI try, but still, this is the project dropbox.com/s/ureu72rankiedks/MyApplication.zip?dl=0
-
Lennon Spirlandelli about 9 yearsI fixed the problem. You've had the same problem I'd had when I tried to use zxing as a library and
Integrator
as a class in my project. Anyway, there are some steps you have to do, so I edited my answer. -
AM031447 about 9 yearsSuccess! He began scanning! Thank you very much :D
-
Lennon Spirlandelli about 9 yearsGreat! Now you just have to code the return from scan
-
AM031447 about 9 yearsI found that if I press the Back button without capture, app will close there any solution?
-
Neo almost 9 years@Lennon: Excuse me, bro. With ZXing-Android-Minimal, is it possible to add Zxing scanner into a custom layout on activity? Thank you very much!
-
Lennon Spirlandelli almost 9 years@MrNeo Yeah, for sure. You can create a custom layout for the scanner and set 'integrator.setCaptureLayout(R.layout.custom_layout)' before call 'initiateScan();'
-
Neo almost 9 years@Lennon: Sorry for the inconvenient, could you please help me with this question: stackoverflow.com/questions/32627145/…!
-
Lennon Spirlandelli almost 9 years@MrNeo Of curse buddy. I'll try though.
-
zeeshan almost 7 yearsThis seems like more relevant answer for current versions, as of July 2017.