我想进入例如多个文本字段
然后我想生成从该输入的QR码。我怎样才能做到这在Android Studio中?
建立图书馆和清单
打开应用水平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码的输入。输入类型也可以同时初始化库中指定。我们还可以指定尺寸。然后,添加以下行来创建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是用于预览所生成的QR码的位图的ImageView的。
保存QR码
QR发电机有一个选项来使用下面的行所生成的QR码的位图保存到存储。
// Save with location, value, bitmap returned and type of Image(JPG/PNG).
QRGSaver.save(savePath, edtValue.getText().toString().trim(), bitmap, QRGContents.ImageType.IMAGE_JPEG);
我们可以在PNG和JPG格式保存QR码也。我们必须从Android 6.0版本处理运行时权限。
您的具体情况:将要在QR码进行编码的信息,并将其添加为inputValue将用于QRGEncoder。下面是为了清楚的示例代码:
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/
串联字符串中的所有信息,并做说字符串的哈希值。接着使用库如(https://github.com/zxing/zxing)生成QR码。