简体   繁体   中英

How can I generate multiple values QR code in android studio

I would like to enter multiple text fields for example

  • name
  • email
  • password
  • address

And then I would like to generate a QR code from this input. How can I do that in android studio?

Setting up the library and manifest

Open App level gradle file and import the library.

implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'  

The, click “Sync Now”. 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"/>  

We need to handle runtime permissions from Android Version 6.0.

Generating QR Code

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.

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.

Your particular case: Combine the information you want to encode in the QR code, and add it as the inputValue for the QRGEncoder. Here is an example code for clarity:

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();  
                }  
            }  
        });  

    }  
} 

Article: https://www.c-sharpcorner.com/article/how-to-generate-qr-code-in-android/

Concatenate all the information in a string and do a hash on said string. Next use a library such as ( https://github.com/zxing/zxing ) to generate the QR code.

Use this for generating qr code online. Then use picasso to load the image. ( Use your data in the url parameter ) https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=data I found it as the best way.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM