Integrate ZXing in Android Studio
I was integrating ZXING into an Android application and there were no good sources for the input all over, I will give you a hint on what worked for me - because it turned out to be very easy.
There is a real handy git repository that provides the zxing
android library project as an AAR archive.
- https://github.com/journeyapps/zxing-android-embedded
All you have to do is add this to your build.gradle
repositories {
jcenter()
}
dependencies {
implementation 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
implementation 'com.google.zxing:core:3.2.0'
}
and Gradle does all the magic to compile the code and makes it accessible in your app.
To start the Scanner afterwards, use this class/method:
From the Activity:
new IntentIntegrator(this).initiateScan(); // `this` is the current Activity
From a Fragment:
IntentIntegrator.forFragment(this).initiateScan(); // `this` is the current Fragment
// If you're using the support library, use IntentIntegrator.forSupportFragment(this) instead.
There are several customizing options:
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();
They have a sample-project and are providing several integration examples:
- AnyOrientationCaptureActivity
- ContinuousCaptureActivity
- CustomScannerActivity
- ToolbarCaptureActivity
If you already visited the link you going to see that I just copy&pasted the code from the git README. If not, go there to get some more insight and code examples.
How to integrate ZXing Library to Android Studio for Barcode Scanning?
You need add the following to your build.gradle
file:
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
dependencies {
// Supports Android 4.0.3 and later (API level 15)
compile 'com.journeyapps:zxing-android-embedded:2.0.1@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.0.1@aar'
// Convenience library to launch the scanning and encoding 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.0.1@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.0.1'
}
My build.gradle
file like this:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.myapplication2"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
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'
// Supports Android 4.0.3 and later (API level 15)
compile 'com.embarkmobile:zxing-android-minimal:2.0.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.embarkmobile:zxing-android-legacy:2.0.0@aar'
// Convenience library to launch the scanning and encoding Activities.
// It automatically picks the best scanning library from the above two, depending on the
// Android version and what is available.
compile 'com.embarkmobile:zxing-android-integration:2.0.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.0.1'
}
The code is here.
Also, for how to use it, please refer my answer on the Stackoverflow here
It contains method and also simple code that I have tested.
Integrating the ZXing library directly into my Android application
UPDATE! - SOLVED + GUIDE
I've managed to figure it out :) And down below you can read step-by-step guide so it hopefully can help others with the same problem as I had ;)
- Install Apache Ant - (See this YouTube video for config help)
- Download the ZXing source from ZXing homepage and extract it
- With the use of Windows Commandline (Run->CMD) navigate to the root directory of the downloaded
zxing src
. - In the commandline window - Type
ant -f core/build.xml
press enter and let Apache work it's magic [having issues?] - Enter Eclipse -> new Android Project, based on the android folder in the directory you just extracted
- Right-click project folder -> Properties -> Java Build Path -> Library -> Add External JARs...
- Navigate to the newly extracted folder and open the core directory and select
core.jar
... hit enter!
Now you just have to correct a few errors in the translations and the AndroidManifest.xml file :) Now you can happily compile, and you will now have a working standalone barcode scanner app, based on the ZXing source ;)
Happy coding guys - I hope it can help others :)
How to integrate Zxing Barcode Scanner without installing the actual zxing app (cannot resolve symbol: .android.CaptureActivity)?
I don't know why it happened, but finally I use another library. I use Zxing-android-minimal and tutorial from here and here. Now it works.
Integrating Zxing Barcode scanner to my android app
You can add zxing library to your app via gradle dependency
just add this to your build.gradle
file
compile 'com.google.zxing:core:3.2.1'
compile 'com.journeyapps:zxing-android-embedded:3.0.3@aar'
Now in your onCreate method of your activity , do the following
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
scanIntegrator.setPrompt("Scan a Barcode");
scanIntegrator.setBeepEnabled(true);
scanIntegrator.setOrientationLocked(true);
scanIntegrator.setBarcodeImageEnabled(true);
scanIntegrator.initiateScan();
You can find a sample project here
Related Topics
Android Emulator: How to Monitor Network Traffic
Android: Getting "Manifest Merger Failed" Error After Updating to a New Version of Gradle
Is There Any Way in Android to Force Open a Link to Open in Chrome
How to Set Text in an Edittext
Intent to Launch the Clock Application on Android
Android Share Images from Assets Folder
Appropriate Multiplication of Matrices for Rotation/Translation
How to Animate View.Setvisibility(Gone)
Android Webview with Garbled Utf-8 Characters
Wrap_Content View Inside a Constraintlayout Stretches Outside the Screen
How to Represent a "Many to Many" Relation with Android Room When Column Names Are Same
Android: Using Simplecursoradapter to Get Data from Database to Listview
How to Parse This Nested JSON Array in Android
Org.JSON.JSONobject Cannot Be Converted to JSONarray in Android
Android: When Should I Use a Handler() and When Should I Use a Thread