app-mobile/app/src/main/java/monnethic/mobile/qrcode/QrCodeScannerActivity.java
GME 53f65d9609 Setup QR Code Scanner
Developped QR Code Scanner
2018-09-28 09:38:43 +02:00

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