How To Generate QR Code In Android

QR-CODE  GENERATOR - Library

Introduction: 

In this article, we will learn how to generate QR Code in Android. Quick Response Code (QR Code in short) is a 2-Dimensional matrix type barcode used to store data. It is more popular because of its storage capacity and fast readability.

Zxing & QR Generator Library:

Zebra Crossing (Zxing) is an awesome library used to generate and read QR codes in mobile apps. But it is bigger in size. So, we have to go for another one, QR Generator which is a tiny, open source library. In this article, we will learn how to create & save the QR Code in Android programmatically.

Steps:

I have split this part into 4 steps as in the following.
  1. Creating a New Project with Empty Activity.
  2. Setting up the library and manifest.
  3. Generating QR Code.
  4. Saving QR Code.

Step 1 - Creating New Project with Empty Activity

  1. Open Android Studio and Select create a new project.
  2. Name the project as per your wish and select an Empty activity.
    Android
  3. Click finish button to create a new project in Android Studio.

Step 2 - Setting up the library and manifest

  1. Open App level gradle file and import the library.
    implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'
  2. The, click “Sync Now”.
  3. Then, open your Manifest file and add the following permissions. It is used to save QR Code to file storage.
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  4. We need to handle runtime permissions from Android Version 6.0.

Step 3 - Generating QR Code

In this step, we will learn how to generate QR Code in Android. Open your MainActivity.java file and add the following lines.
QRGEncoder qrgEncoder = new QRGEncoder(inputValue, null, QRGContents.Type.TEXT, smallerDimension);
      - Here, inputValue is an input to be converted to QR Code.
      - Input Type also can be specified while initializing the library.
      - We can specify the dimensions also.
    Then, add the following lines to create QR Code and encode that into Bitmap Format.
    try {  
      // Getting QR-Code as Bitmap  
      bitmap = qrgEncoder.encodeAsBitmap();  
      // Setting Bitmap to ImageView  
      qrImage.setImageBitmap(bitmap);  
    } catch (WriterException e) {  
      Log.v(TAG, e.toString());  
    }
    qrImage is an ImageView used to preview the generated QR code bitmap.

Step 4 - Saving QR Code

QR Generator has an option to save the generated QR Code Bitmap to storage using the following lines.
// Save with location, value, bitmap returned and type of Image(JPG/PNG).  
QRGSaver.save(savePath, edtValue.getText().toString().trim(), bitmap, QRGContents.ImageType.IMAGE_JPEG);
We can save QR Code in PNG & JPG format also. We have to handle runtime permissions from Android version 6.0.

Full Code

You can find the full code implementation here.
public class MainActivity extends AppCompatActivity {  
  
    String TAG = "GenerateQRCode";  
    EditText edtValue;  
    ImageView qrImage;  
    Button start, save;  
    String inputValue;  
    String savePath = Environment.getExternalStorageDirectory().getPath() + "/QRCode/";  
    Bitmap bitmap;  
    QRGEncoder qrgEncoder;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        qrImage = (ImageView) findViewById(R.id.QR_Image);  
        edtValue = (EditText) findViewById(R.id.edt_value);  
        start = (Button) findViewById(R.id.start);  
        save = (Button) findViewById(R.id.save);  
  
        start.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  
                inputValue = edtValue.getText().toString().trim();  
                if (inputValue.length() > 0) {  
                    WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);  
                    Display display = manager.getDefaultDisplay();  
                    Point point = new Point();  
                    display.getSize(point);  
                    int width = point.x;  
                    int height = point.y;  
                    int smallerDimension = width < height ? width : height;  
                    smallerDimension = smallerDimension * 3 / 4;  
  
                    qrgEncoder = new QRGEncoder(  
                            inputValue, null,  
                            QRGContents.Type.TEXT,  
                            smallerDimension);  
                    try {  
                        bitmap = qrgEncoder.encodeAsBitmap();  
                        qrImage.setImageBitmap(bitmap);  
                    } catch (WriterException e) {  
                        Log.v(TAG, e.toString());  
                    }  
                } else {  
                    edtValue.setError("Required");  
                }  
            }  
        });  
  
        save.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                boolean save;  
                String result;  
                try {  
                    save = QRGSaver.save(savePath, edtValue.getText().toString().trim(), bitmap, QRGContents.ImageType.IMAGE_JPEG);  
                    result = save ? "Image Saved" : "Image Not Saved";  
                    Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
  
    }  
}

Download Code

You can download the full source code of the article in GitHub. If you like this article, do star the repo in GitHub.

Share this

Related Posts

Previous
Next Post »

4 comments

comments
27 June 2020 at 19:29 delete

Those strange-looking shape-filled squares you've been seeing lately may not look like much, but they are very likely the next big thing in marketing and branding for U.S. businesses. With a simple snap of a smartphone, that unassuming graphic sends valuable information instantly to potential customers, which for some businesses can mean the difference between a sale or a walk-away. QR Code Creator

Reply
avatar
6 July 2020 at 16:37 delete

Your business can reap myriad benefits by getting an Android application developed. You can take the advantage of Android's huge market. There are many highly skilled developers available to build tailored and cost-effective apps. The built-in functionality of Android devices also supports developers in creating feature-rich applications. Android apps will thus help your business to sustain the competition by quickening its time-to-market and enhancing the ROI. Apk Door

Reply
avatar
15 July 2020 at 13:25 delete

The bit of leeway here is the way that you could truly take a gander at the unit before buying, and the costs aren't really awful too, as long as you scout around! Display reparatur

Reply
avatar
6 August 2020 at 00:48 delete

Great Article
android based projects

Java Training in Chennai

Project Center in Chennai

Java Training in Chennai

projects for cse

The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

Reply
avatar

Please Comment about the Posts and Blog