Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I/CameraFramework: handleMessage: 16
- package fr.cityfid.cityfidtablet;
- import android.Manifest;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.graphics.Point;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.annotation.NonNull;
- import android.support.design.widget.CoordinatorLayout;
- import android.support.design.widget.Snackbar;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.util.SparseArray;
- import android.view.Display;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- 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 java.io.IOException;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- public class ScanActivity extends AppCompatActivity {
- @BindView(R.id.scan_coordinator)
- CoordinatorLayout coordinatorLayout;
- @BindView(R.id.camera_view)
- SurfaceView cameraView;
- private BarcodeDetector barcodeDetector;
- private CameraSource cameraSource;
- private String lastDetectedCode;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_scan);
- ButterKnife.bind(this);
- //instanciate barcode detecor
- barcodeDetector = new BarcodeDetector.Builder(this)
- .setBarcodeFormats(Barcode.QR_CODE | Barcode.DATA_MATRIX)
- .build();
- barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
- @Override
- public void release() {
- Log.d("DETECTOR", "Detector processor released");
- }
- @Override
- public void receiveDetections(Detector.Detections<Barcode> detections) {
- final SparseArray<Barcode> barcodes = detections.getDetectedItems();
- if (barcodes.size() != 0){
- lastDetectedCode = barcodes.valueAt(0).displayValue;
- Intent intent = new Intent(ScanActivity.this, ScanResultActivity.class);
- intent.putExtra("QRCODE", lastDetectedCode);
- startActivity(intent);
- cameraSource.stop();
- cameraSource.release();
- barcodeDetector.release();
- finish();
- return;
- }
- }
- });
- //instanciating camera source
- Display display = getWindowManager().getDefaultDisplay();
- Point size = new Point();
- display.getSize(size);
- cameraSource = new CameraSource.Builder(this, barcodeDetector)
- .setFacing(CameraSource.CAMERA_FACING_FRONT)
- .setAutoFocusEnabled(true)
- .setRequestedFps(1.0f)
- .build();
- //binding camera view
- cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- startCamera(holder);
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- }
- });
- //wait before closing activity
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- finish();
- }
- }, 15000);
- }
- /**
- * This method starts the camera and attach it to the SurfaceHolder
- * @param holder SurfaceHolder
- */
- private void startCamera(SurfaceHolder holder){
- try {
- if (ContextCompat.checkSelfPermission(ScanActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
- Snackbar.make(coordinatorLayout, R.string.waiting_camera_permission, Snackbar.LENGTH_LONG).show();
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 9001);
- } else {
- cameraSource.start(holder);
- Snackbar.make(coordinatorLayout, R.string.present_qr, Snackbar.LENGTH_INDEFINITE).show();
- }
- } catch (IOException e){
- Log.e("CAMERA_ERR", e.getMessage());
- Snackbar.make(coordinatorLayout, R.string.camera_io_error, Snackbar.LENGTH_LONG).show();
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- switch (requestCode){
- case 9001:
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
- startCamera(cameraView.getHolder());
- }
- break;
- }
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- cameraSource.release();
- barcodeDetector.release();
- }
- }
Add Comment
Please, Sign In to add comment