diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 9087a93..ba2c89f 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index a6abae5..c4c7f96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,4 +41,5 @@ dependencies { implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.5' implementation 'com.google.zxing:core:3.2.1' implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar' + implementation 'com.google.android.gms:play-services-vision:11.8.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 13aea5a..253d003 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + + + @@ -33,6 +38,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/monnethic/mobile/qrcode/QrCodeScannerActivity.java b/app/src/main/java/monnethic/mobile/qrcode/QrCodeScannerActivity.java new file mode 100644 index 0000000..f65639e --- /dev/null +++ b/app/src/main/java/monnethic/mobile/qrcode/QrCodeScannerActivity.java @@ -0,0 +1,104 @@ +package monnethic.mobile.qrcode; + +import android.Manifest; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.support.v4.app.ActivityCompat; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.SparseArray; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.monnthic.monnethicmobile.R; +import com.google.android.gms.vision.CameraSource; +import com.google.android.gms.vision.Detector; +import com.google.android.gms.vision.barcode.Barcode; +import com.google.android.gms.vision.barcode.BarcodeDetector; + +import monnethic.mobile.transaction.ApprovePayementActivity; + +public class QrCodeScannerActivity extends AppCompatActivity { + SurfaceView surfaceView; + private BarcodeDetector barcodeDector; + private CameraSource cameraSource; + private static final int REQUEST_CAMERA_PERMISSION = 201; + private String intentData = ""; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_qr_code_scanner); + initViews(); + } + + private void initViews(){ + surfaceView = findViewById(R.id.surfaceView); + } + + private void initialiseDetector(){ + Toast.makeText(getApplicationContext(), "QR code scanner started", Toast.LENGTH_SHORT).show(); + + barcodeDector = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.ALL_FORMATS).build(); + cameraSource = new CameraSource.Builder(this, barcodeDector).setRequestedPreviewSize(1920,1080).setAutoFocusEnabled(true).build(); + + surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { + @Override + public void surfaceCreated(SurfaceHolder surfaceHolder) { + try{ + if(ActivityCompat.checkSelfPermission(QrCodeScannerActivity.this, Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED){ + cameraSource.start(surfaceView.getHolder()); + }else{ + ActivityCompat.requestPermissions(QrCodeScannerActivity.this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); + } + }catch (Exception e){ + e.getMessage(); + } + } + + @Override + public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { + + } + + @Override + public void surfaceDestroyed(SurfaceHolder surfaceHolder) { + cameraSource.stop(); + } + }); + + barcodeDector.setProcessor(new Detector.Processor() { + @Override + public void release() { + Toast.makeText(getApplicationContext(),"Barcode scanner has been stopped",Toast.LENGTH_SHORT).show(); + } + + @Override + public void receiveDetections(Detector.Detections detections) { + final SparseArray barcodes = detections.getDetectedItems(); + if(barcodes.size()!=0){ + intentData = barcodes.valueAt(0).displayValue; + Intent scannedQrIntent = new Intent(QrCodeScannerActivity.this, ApprovePayementActivity.class); + scannedQrIntent.putExtra("valueScanned",intentData); + QrCodeScannerActivity.this.startActivity(scannedQrIntent); + + } + } + }); + } + + @Override + protected void onPause(){ + super.onPause(); + cameraSource.release(); + } + + @Override + protected void onResume(){ + super.onResume(); + initialiseDetector(); + } +} diff --git a/app/src/main/java/monnethic/mobile/transaction/ApprovePayementActivity.java b/app/src/main/java/monnethic/mobile/transaction/ApprovePayementActivity.java new file mode 100644 index 0000000..034dfe8 --- /dev/null +++ b/app/src/main/java/monnethic/mobile/transaction/ApprovePayementActivity.java @@ -0,0 +1,29 @@ +package monnethic.mobile.transaction; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.widget.TextView; + +import com.example.monnthic.monnethicmobile.R; + +public class ApprovePayementActivity extends AppCompatActivity { + TextView textDisplay; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_approve_payement); + + Intent intent = getIntent(); + String stringToDisplay = intent.getStringExtra("valueScanned"); + + initViews(stringToDisplay); + } + + private void initViews(String stringToDisplay){ + textDisplay = findViewById(R.id.textDisplay); + + textDisplay.setText(stringToDisplay); + } +} diff --git a/app/src/main/java/monnethic/mobile/transaction/MakePayementActivity.java b/app/src/main/java/monnethic/mobile/transaction/MakePayementActivity.java new file mode 100644 index 0000000..205a83d --- /dev/null +++ b/app/src/main/java/monnethic/mobile/transaction/MakePayementActivity.java @@ -0,0 +1,35 @@ +package monnethic.mobile.transaction; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +import com.example.monnthic.monnethicmobile.R; + +import monnethic.mobile.qrcode.QrCodeScannerActivity; + +public class MakePayementActivity extends AppCompatActivity { + Button btnScanQr; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_make_payement); + + initViews(); + } + + private void initViews(){ + btnScanQr = findViewById(R.id.buttonScanQr); + + btnScanQr.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent payementIntent = new Intent(MakePayementActivity.this, QrCodeScannerActivity.class); + MakePayementActivity.this.startActivity(payementIntent); + } + }); + } +} diff --git a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java index 906ae76..a5eee8a 100644 --- a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java +++ b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java @@ -10,6 +10,7 @@ import android.widget.Toast; import com.example.monnthic.monnethicmobile.R; +import monnethic.mobile.transaction.MakePayementActivity; import monnethic.mobile.transaction.ReceivePayementActivity; public class UserAccountActivity extends AppCompatActivity { @@ -46,16 +47,18 @@ public class UserAccountActivity extends AppCompatActivity { }); } public void sendPayement(){ - Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show(); + Intent payementIntent = new Intent(UserAccountActivity.this, MakePayementActivity.class); + UserAccountActivity.this.startActivity(payementIntent); } public void receivePayement(){ - Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show(); + Intent receivePayementIntent = new Intent(UserAccountActivity.this, ReceivePayementActivity.class); UserAccountActivity.this.startActivity(receivePayementIntent); } public void settings(){ Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show(); } + public void refreshSolde(){ solde.setText("0.00"); } diff --git a/app/src/main/res/layout/activity_approve_payement.xml b/app/src/main/res/layout/activity_approve_payement.xml new file mode 100644 index 0000000..0e29733 --- /dev/null +++ b/app/src/main/res/layout/activity_approve_payement.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/app/src/main/res/layout/activity_make_payement.xml b/app/src/main/res/layout/activity_make_payement.xml new file mode 100644 index 0000000..30b2ddc --- /dev/null +++ b/app/src/main/res/layout/activity_make_payement.xml @@ -0,0 +1,21 @@ + + + +