Генератор QR-кода для получения UserID из Firebase Authentication
Ниже я создал генератор QR-кода с использованием библиотеки zxing. Теперь это работает так: пользователь вводит текст в editText, и когда они нажимают кнопку " Создать", он отображает QR-код с этим текстом.
Мой вопрос: есть ли способ изменить приведенный ниже код, чтобы он получал текущий идентификатор пользователя (из аутентификации firebase при регистрации пользователей) и печатал его на кнопке editText?
Моя цель состоит в том, чтобы QR-код взял текущего пользователя, который вошел в систему, получил его идентификатор пользователя из Firebase и создал QR-код только на основе идентификатора пользователя.
Если это так, я благодарен за любую помощь, или если это более простой способ, я открыт для предложений - заранее спасибо.
CodeQR.java
public class CodeQR extends AppCompatActivity {
EditText User_txt;
Button generateBtn;
ImageView qrImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_code_q_r);
User_txt = (EditText)findViewById(R.id.user_id);
generateBtn = (Button)findViewById(R.id.generate_btn);
qrImage = (ImageView)findViewById(R.id.imageview);
generateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try{
BitMatrix bitMatrix = multiFormatWriter.encode(User_txt.getText().toString(),BarcodeFormat.QR_CODE,500,500);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
qrImage.setImageBitmap(bitmap);
}catch (Exception e){
e.printStackTrace();
}
}
});
}
}
CodeQR.xml
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="413dp"
android:layout_height="160dp"
android:layout_weight="1"
android:background="@drawable/header_menu"
android:gravity="bottom"
android:orientation="vertical"
android:padding="12dp"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/code_txt"
android:layout_width="281dp"
android:layout_height="64dp"
android:text="QR Code"
android:textColor="#000000"
android:textSize="30sp" />
</LinearLayout>
<EditText
android:id="@+id/user_id"
android:layout_width="match_parent"
android:layout_height="104dp"
android:hint="Enter your UserID"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.287" />
<Button
android:id="@+id/generate_btn"
android:layout_width="178dp"
android:layout_height="84dp"
android:layout_gravity="center"
android:gravity="center"
android:text="GET QR Code"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.536"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.459" />
<ImageView
android:id="@+id/imageview"
android:layout_width="281dp"
android:layout_height="245dp"
android:layout_gravity="center"
android:background="#ffffff"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.569"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.82" />
</androidx.constraintlayout.widget.ConstraintLayout>
1 ответ
Вы можете попробовать следующий код -
public class CodeQR extends AppCompatActivity {
EditText User_txt;
Button generateBtn;
ImageView qrImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
.........
generateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//you can put a check here for null user
setupUserQRcode(FirebaseAuth.getInstance().getCurrentUser().getUid());
}
});
}
private void setupUserQRcode(String firebaseUID) {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
BitMatrix bitMatrix = multiFormatWriter.encode(firebaseUID, BarcodeFormat.QR_CODE, 500, 500);
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
qrImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Сначала убедитесь, что вы настроили свой проект с помощью Firebase.