mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2025-01-16 18:15:54 +00:00
165 lines
5.7 KiB
Java
165 lines
5.7 KiB
Java
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<QuerySnapshot>() {
|
|
private static final String TAG = "Firestore";
|
|
|
|
@Override
|
|
public void onComplete(@NonNull Task<QuerySnapshot> 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);
|
|
}
|
|
}
|
|
}
|