【问题标题】:How to create Qr code with multiple variable on a single QR code?如何在单个二维码上创建具有多个变量的二维码?
【发布时间】:2017-10-28 18:35:58
【问题描述】:

我的应用程序项目具有二维码生成器功能。我使用 Zxing 库来编码 qr 代码生成器,但它只能生成 qr 代码单个变量。我想在单个二维码上创建具有 3 个变量的二维码。请帮我创建这个。 p.s.我是安卓新手。

我的代码

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.journeyapps.barcodescanner.BarcodeEncoder;


public class MainActivity extends AppCompatActivity {

private EditText editText , editText2 , editText3;
private String qrText1 , qrText2 , qrText3;
private ImageView qrCodeView;

@Override
protected void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   editText = (EditText) this.findViewById(R.id.editText);
   editText2 = (EditText) this.findViewById(R.id.editText2);
   editText3 = (EditText) this.findViewById(R.id.editText3);

   Button generateBtn = (Button) this.findViewById(R.id.generateButton);
   qrCodeView = (ImageView) this.findViewById(R.id.imageView);

   generateBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
         qrText1 = editText.getText().toString().trim();
         qrText2 = editText2.getText().toString().trim();
         qrText3 = editText3.getText().toString().trim();

         MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
         try {
            BitMatrix bitMatrix = multiFormatWriter.encode(qrText1, BarcodeFormat.QR_CODE, 200, 200);
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
            qrCodeView.setImageBitmap(bitmap);

         } catch (WriterException e) {
            e.printStackTrace();
         }
      }
   });
 }
}

我不知道如何在创建单个二维码时将 qrText2 和 qrText3 与 qrText1 添加。

【问题讨论】:

  • AFAIK,二维码是从字符串生成的。您可以随意组装该字符串。您可能想编辑您的问题并提供minimal reproducible example,显示您的代码使用“仅单个变量”,然后解释您在尝试使用更多变量时遇到的问题。
  • 您可以使用 Gson 创建一个包含多个变量的 json 对象。然后只需发送 json 对象。 (我做到了here

标签: android qr-code


【解决方案1】:
generateBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        qrText1 = editText.getText().toString().trim();
        qrText2 = editText2.getText().toString().trim();
        qrText3 = editText3.getText().toString().trim();

        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        try {
            BitMatrix bitMatrix = multiFormatWriter.encode("Text1 :"+ qrText1 + "\n 
Text2"+ qrText2 +"\n Text3"+ qrText3 , BarcodeFormat.QR_CODE, 200, 200);
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
            qrCodeView.setImageBitmap(bitmap);
        }
        catch (WriterException e) 
        {
            e.printStackTrace();
        }
    }
});

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
相关资源
最近更新 更多