package com.example.ian.titanscout; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.firestore.*; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; import static android.widget.Toast.makeText; public class qrActivity extends AppCompatActivity { ImageView imageView; Button button; Button btnScan; EditText editText; String EditTextValue ; Thread thread; public final static int QRcodeWidth = 350; Bitmap bitmap; TextView tv_qr_readTxt; private Object MainActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activityqr); // // WARNING: TAKE OUT OF FINAL CODE, ONLY FOR TESTING // this.move("auth-team-2022"); IntentIntegrator integrator = new IntentIntegrator(qrActivity.this); integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES); integrator.setPrompt("Scan a teammate's QR!"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.initiateScan(); imageView = (ImageView)findViewById(R.id.imageView); editText = (EditText)findViewById(R.id.editText); button = (Button)findViewById(R.id.button); btnScan = (Button)findViewById(R.id.btnScan); tv_qr_readTxt = (TextView) findViewById(R.id.tv_qr_readTxt); } 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.QRCodeBlackColor):getResources().getColor(R.color.QRCodeWhiteColor); } } Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444); bitmap.setPixels(pixels, 0, 350, 0, 0, bitMatrixWidth, bitMatrixHeight); return bitmap; } void move(String withCode) { Log.e("START", "START"); Intent intent = new Intent(this, PrematchesActivity.class); intent.putExtra("auth", withCode); startActivity(intent); Log.e("END", "END"); } @Override protected void onActivityResult(int requestCode, final int resultCode, Intent data) { final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Log.e("Scan", "Cancelled scan"); } else { Log.e("Scan", "Scanned"); tv_qr_readTxt.setText(result.getContents()); // Access a Cloud Firestore instance from your Activity FirebaseFirestore db = FirebaseFirestore.getInstance(); db.collection("data") .get() .addOnCompleteListener(new OnCompleteListener() { private static final String TAG = "Firestore"; @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { if (document.getId().equals(result.getContents())) { makeText(qrActivity.this, "Scan Successful!", Toast.LENGTH_LONG).show(); move(result.getContents()); } else { makeText(qrActivity.this, "Team not registered. Please try again.", Toast.LENGTH_LONG).show(); } Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.d(TAG, "Error getting documents: ", task.getException()); } } }); makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); } } else { // This is important, otherwise the result will not be passed to the fragment super.onActivityResult(requestCode, resultCode, data); } } }