Widget Recent Post No.

header ads

QR and Barcode Scanner App in Android Studio | QR code scanner android studio


 Step 1 main.xml


<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout 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">


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Hello World!"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintLeft_toLeftOf="parent"

        app:layout_constraintRight_toRightOf="parent"

        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>



Step 2 main.java

package in.learncodewithrk.qrbarcodescanner;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.hardware.Camera;

import android.net.Uri;

import android.os.Build;


import android.os.Bundle;

import android.util.Log;

import android.widget.Toast;


import androidx.appcompat.app.AlertDialog;

import androidx.appcompat.app.AppCompatActivity;

import androidx.core.app.ActivityCompat;

import androidx.core.content.ContextCompat;


import com.google.zxing.Result;


import me.dm7.barcodescanner.zxing.ZXingScannerView;


import static android.Manifest.permission.CAMERA;


public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {


    private static final int REQUEST_CAMERA = 1;

    private ZXingScannerView scannerView;

    private static int camId = Camera.CameraInfo.CAMERA_FACING_BACK;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);


        scannerView = new ZXingScannerView(this);

        setContentView(scannerView);

        int currentApiVersion = Build.VERSION.SDK_INT;


        if(currentApiVersion >=  Build.VERSION_CODES.M)

        {

            if(checkPermission())

            {

                Toast.makeText(getApplicationContext(), "Permission already granted!", Toast.LENGTH_LONG).show();

            }

            else

            {

                requestPermission();

            }

        }

    }


    private boolean checkPermission()

    {

        return (ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA) == PackageManager.PERMISSION_GRANTED);

    }


    private void requestPermission()

    {

        ActivityCompat.requestPermissions(this, new String[]{CAMERA}, REQUEST_CAMERA);

    }


    @Override

    public void onResume() {

        super.onResume();


        int currentapiVersion = android.os.Build.VERSION.SDK_INT;

        if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {

            if (checkPermission()) {

                if(scannerView == null) {

                    scannerView = new ZXingScannerView(this);

                    setContentView(scannerView);

                }

                scannerView.setResultHandler(this);

                scannerView.startCamera();

            } else {

                requestPermission();

            }

        }

    }


    @Override

    public void onDestroy() {

        super.onDestroy();

        scannerView.stopCamera();

    }


    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

        switch (requestCode) {

            case REQUEST_CAMERA:

                if (grantResults.length > 0) {


                    boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;

                    if (cameraAccepted){

                        Toast.makeText(getApplicationContext(), "Permission Granted, Now you can access camera", Toast.LENGTH_LONG).show();

                    }else {

                        Toast.makeText(getApplicationContext(), "Permission Denied, You cannot access and camera", Toast.LENGTH_LONG).show();

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

                            if (shouldShowRequestPermissionRationale(CAMERA)) {

                                showMessageOKCancel("You need to allow access to both the permissions",

                                        new DialogInterface.OnClickListener() {

                                            @Override

                                            public void onClick(DialogInterface dialog, int which) {

                                                requestPermissions(new String[]{CAMERA},

                                                        REQUEST_CAMERA);

                                            }

                                        });

                                return;

                            }

                        }

                    }

                }

                break;

        }

    }


    private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {



                new AlertDialog.Builder(MainActivity.this)

                .setMessage(message)

                .setPositiveButton("OK", okListener)

                .setNegativeButton("Cancel", null)

                .create()

                .show();

    }


    @Override

    public void handleResult(Result result) {

        final String myResult = result.getText();

        Log.d("QRCodeScanner", result.getText());

        Log.d("QRCodeScanner", result.getBarcodeFormat().toString());


        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Scan Result");

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                scannerView.resumeCameraPreview(MainActivity.this);

            }

        });

        builder.setNeutralButton("Visit", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myResult));

                startActivity(browserIntent);

            }

        });

        builder.setMessage(result.getText());

        AlertDialog alert1 = builder.create();

        alert1.show();

    }

}


GITHUB : https://github.com/LearncodeWithRk/QRBarcodeScanner

Post a Comment

0 Comments