Setup QR Code Scanner

Developped QR Code Scanner
This commit is contained in:
GME 2018-09-28 09:38:43 +02:00
parent 81d4d33d3d
commit 53f65d9609
10 changed files with 239 additions and 2 deletions

View file

@ -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'
}

View file

@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
@ -17,6 +18,10 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="barcode" />
<activity android:name="monnethic.mobile.homepage.HomepageActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -33,6 +38,9 @@
<activity android:name="monnethic.mobile.transaction.TransactionActivity" />
<activity android:name="monnethic.mobile.qrcode.QrCodeActivity" />
<activity android:name="monnethic.mobile.transaction.ReceivePayementActivity" />
<activity android:name="monnethic.mobile.transaction.MakePayementActivity" />
<activity android:name="monnethic.mobile.qrcode.QrCodeScannerActivity" />
<activity android:name="monnethic.mobile.transaction.ApprovePayementActivity"></activity>
</application>
</manifest>

View file

@ -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<Barcode>() {
@Override
public void release() {
Toast.makeText(getApplicationContext(),"Barcode scanner has been stopped",Toast.LENGTH_SHORT).show();
}
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> 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();
}
}

View file

@ -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);
}
}

View file

@ -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);
}
});
}
}

View file

@ -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");
}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="monnethic.mobile.transaction.ApprovePayementActivity">
<TextView
android:id="@+id/textDisplay"
android:layout_width="183dp"
android:layout_height="195dp"
android:layout_marginBottom="184dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="monnethic.mobile.transaction.MakePayementActivity">
<Button
android:id="@+id/buttonScanQr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="148dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="148dp"
android:text="SCAN QR CODE"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="monnethic.mobile.qrcode.QrCodeScannerActivity">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true" />
</RelativeLayout>