Генератор 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.

Другие вопросы по тегам