Introduction
In today's world of social distancing and working from home, marketers are seeing a detonating use of QR Codes. The use of QR codes is rapidly expanding. Now all products have their own unique QR code.
And now all devices have their own built-in QR Code Reader App.
However, there are times when we need a QR Code Scanner in our App.
So, here we learn about how to create a QR Code Scanner Application on Android.
Step 1
Create a new project in the Android Studio and select an empty activity.
Step 2
Give the project a name, select the save location folder, and click on the finish button.
Step 3
Add the following dependency in the build.gradle app level file.
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
Step 4
Create the activity_main.xml file as shown below.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SCAN"
android:layout_centerInParent="true"
android:id="@+id/btnScan" />
</RelativeLayout>
Step 5
Declare a Button object and include the following code in the onCreate method in the MainActivity.
Button btnScan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnScan = (Button) findViewById(R.id.btnScan);
btnScan.setOnClickListener(v - > {
ScanCode();
});
}
Step 6
Create the ScanCode method in the MainActivity as shown below.
private void ScanCode() {
ScanOptions options = new ScanOptions();
options.setPrompt("Volume up to flash on");
options.setBeepEnabled(true);
options.setOrientationLocked(true);
options.setCaptureActivity(CaptureActivity.class);
barLauncher.launch(options);
}
Step 7
Create a CaptureActivity Class as shown below.
package com.Uday.qrcodescanner;
public class CaptureActivity extends com.journeyapps.barcodescanner.CaptureActivity {}
Step 8
Include CaptureActivity in the Manifiest File.
<activity android:name=".CaptureActivity"
android:screenOrientation="portrait"
android:stateNotNeeded="true"
android:theme="@style/zxing_CaptureTheme" />
Step 9
Make a barLauncher object in the MainActivity File as shown below.
ActivityResultLauncher < ScanOptions > barLauncher = registerForActivityResult(new ScanContract(), result - > {
if (result.getContents() != null) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Result");
builder.setMessage(result.getContents());
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).show();
}
});
Step 10
Include Camera Permission in the Manifests File.
<uses-permission android:name="android.permission.CAMERA"/>
Final MainActivity.Java File
package com.Uday.qrcodescanner;
import androidx.activity.result.ActivityResultLauncher;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Button;
import com.journeyapps.barcodescanner.ScanContract;
import com.journeyapps.barcodescanner.ScanOptions;
public class MainActivity extends AppCompatActivity {
Button btnScan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnScan = (Button) findViewById(R.id.btnScan);
btnScan.setOnClickListener(v->
{
ScanCode();
});
}
private void ScanCode() {
ScanOptions options = new ScanOptions();
options.setPrompt("Volume up to flash on");
options.setBeepEnabled(true);
options.setOrientationLocked(true);
options.setCaptureActivity(CaptureActivity.class);
barLauncher.launch(options);
}
ActivityResultLauncher<ScanOptions> barLauncher = registerForActivityResult(new ScanContract(),result->{
if(result.getContents() != null)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Result");
builder.setMessage(result.getContents());
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).show();
}
});
}
Step 11
Now run your app and allow camera permission as per the following and scan any QR code.
Summary
So you see, it's very easy to create a QR Code Scanner in Android with little coding.
In this article, we will learn how to create a QR Code Scanner on Android.
Thank you. Enjoy Coding.