如何在Android Studio中生成多个值的QR码

时间:2019-02-09 16:26:00

标签: java android

例如,我想输入多个文本字段

  • 名称
  • 电子邮件
  • 密码
  • 地址

然后我想从此输入生成QR码。如何在android studio中做到这一点?

3 个答案:

答案 0 :(得分:1)

连接字符串中的所有信息,并对字符串进行哈希处理。接下来,使用(https://github.com/zxing/zxing)之类的库来生成QR码。

答案 1 :(得分:0)

设置库和清单

打开应用程序级别gradle文件并导入库。

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

然后,单击“立即同步”。 然后,打开清单文件并添加以下权限。它用于将QR码保存到文件存储中。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

我们需要处理Android 6.0版中的运行时权限。

生成QR码

QRGEncoder qrgEncoder = new QRGEncoder(inputValue, null, QRGContents.Type.TEXT, smallerDimension);  

此处,inputValue是要转换为QR Code的输入。 还可以在初始化库时指定输入类型。 我们也可以指定尺寸。 然后,添加以下行以创建QR码并将其编码为位图格式。

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是一个ImageView,用于预览生成的QR码位图。

保存QR码

QR Generator可以选择使用以下几行将生成的QR Code位图保存到存储中。

// Save with location, value, bitmap returned and type of Image(JPG/PNG).  
QRGSaver.save(savePath, edtValue.getText().toString().trim(), bitmap, QRGContents.ImageType.IMAGE_JPEG);  

我们也可以将QR码保存为PNG和JPG格式。我们必须处理Android 6.0版中的运行时权限。

您的特殊情况: 将要编码的信息合并到QR码中,并将其添加为QRGEncoder的inputValue。下面是一个示例代码,以简化说明:

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

    }  
} 

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

答案 2 :(得分:0)

使用它在线生成二维码。然后使用毕加索加载图像。 (在url参数中使用您的数据) https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=data 我发现这是最好的方法。