이 클래스에서 qRcode를 생성하고이를 firebase 저장소에 저장하면 모든 것이 잘 작동하지만 qrcode가 동일한 이름, 즉 "QR 코드"로 저장 될 때마다 문제가 발생합니다 .I Firebase Storage의 QRCodes 폴더에 다른 사용자의 다른 이름으로 qRcode를 저장하려고합니다.QRCode 비트 맵 다른 파일 이름으로 Fiebase Databse로 업로드
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.ExifInterface;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageMetadata;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import java.io.ByteArrayOutputStream;
import static android.R.attr.bitmap;
public class Register extends AppCompatActivity {
//firebase auth object
private FirebaseAuth firebaseAuth;
private StorageReference mStorage;
private DatabaseReference mDatabse;
//our new views
private EditText editTextName, editTextAddress, editTextEmail, editTextPhoneOrRid, editTextPassword;
private Button buttonSave;
private ProgressDialog progressDialog;
public final static int QRcodeWidth = 500;
private Bitmap bitmap;
private FirebaseUser user;
private ExifInterface exif;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
progressDialog = new ProgressDialog(this);
firebaseAuth = FirebaseAuth.getInstance();
user = firebaseAuth.getCurrentUser();
mDatabse = FirebaseDatabase.getInstance().getReferenceFromUrl("https://lpuevents-8f661.firebaseio.com/AppUsers");
mStorage = FirebaseStorage.getInstance().getReferenceFromUrl("gs://lpuevents-8f661.appspot.com/QR codes/");
//getting the views from xml resource
editTextAddress = (EditText) findViewById(R.id.editText7);
editTextName = (EditText) findViewById(R.id.editText3);
editTextEmail = (EditText) findViewById(R.id.editText4);
editTextPhoneOrRid = (EditText) findViewById(R.id.editText6);
editTextPassword = (EditText) findViewById(R.id.editText8);
buttonSave = (Button) findViewById(R.id.button3);
if (user == null) {
//closing this activity
finish();
//starting login activity
startActivity(new Intent(this, Login.class));
}
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveUserInformation();
// wait(360000);
registerUser();
}
});
}
Bitmap TextToImageEncode(String Value) throws WriterException {
BitMatrix bitMatrix;
try {
bitMatrix = new MultiFormatWriter().encode(
Value,
BarcodeFormat.DATA_MATRIX.QR_CODE,
QRcodeWidth, QRcodeWidth, null
);
} catch (IllegalArgumentException Illegalargumentexception) {
return null;
}
int bitMatrixWidth = bitMatrix.getWidth();
int bitMatrixHeight = bitMatrix.getHeight();
int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
for (int y = 0; y < bitMatrixHeight; y++) {
int offset = y * bitMatrixWidth;
for (int x = 0; x < bitMatrixWidth; x++) {
pixels[offset + x] = bitMatrix.get(x, y) ?
getResources().getColor(R.color.black) : getResources().getColor(R.color.white);
}
}
Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight);
return bitmap;
}
private void saveUserInformation() {
//Getting values from database
final String name = editTextName.getText().toString().trim();
final String address = editTextAddress.getText().toString().trim();
final String email = editTextEmail.getText().toString().trim();
final String phone = editTextPhoneOrRid.getText().toString().trim();
//String id = user.getUid().trim();
try {
bitmap = TextToImageEncode(phone+" "+email);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mStorage.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Toast.makeText(Register.this, "Succesfully Saved...", Toast.LENGTH_LONG).show();
DatabaseReference userInfo = mDatabse.push();
Uri downloadUrl = taskSnapshot.getDownloadUrl();
taskSnapshot.getMetadata();
userInfo.child("name").setValue(name);
userInfo.child("email").setValue(email);
userInfo.child("address").setValue(address);
userInfo.child("phone").setValue(phone);
userInfo.child("image").setValue(downloadUrl.toString());
}
});
//imageView.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}
private void registerUser() {
String email = editTextEmail.getText().toString().trim();
String password = editTextPassword.getText().toString().trim();
//checking if email and passwords are empty
if (TextUtils.isEmpty(email)) {
Toast.makeText(this, "Please enter email", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(this, "Please enter password", Toast.LENGTH_LONG).show();
return;
}
progressDialog.setMessage("Registering Please Wait...");
progressDialog.show();
progressDialog.dismiss();
//creating a new user
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//checking if success
if (task.isSuccessful()) {
//display some message here
Toast.makeText(Register.this, "Successfully registered", Toast.LENGTH_LONG).show();
} else {
//display some message here
Toast.makeText(Register.this, "Registration Error", Toast.LENGTH_LONG).show();
}
progressDialog.dismiss();
}
});
}
}
아무도 도와 줄 수 있습니까? –