105 lines
3.7 KiB
Java
105 lines
3.7 KiB
Java
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();
|
|
}
|
|
}
|