例如,我想输入多个文本字段
然后我想从此输入生成QR码。如何在android studio中做到这一点?
答案 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 我发现这是最好的方法。