Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.aminer.qrcode;
- import android.Manifest;
- import android.app.Activity;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.util.DisplayMetrics;
- import android.util.SparseArray;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.ViewTreeObserver;
- import android.widget.Toast;
- import com.example.aminer.qrcode.views.BoxDetector;
- import com.google.android.gms.common.api.CommonStatusCodes;
- 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;
- /**
- * Created by aminer on 18/01/16.
- */
- public class ScanBarcodeActivity extends Activity {
- public final static int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 2001;
- private boolean dothecam = true;
- SurfaceView cameraPreview;
- @Override
- public void onRequestPermissionsResult(int requestCode,
- String permissions[], int[] grantResults) {
- switch (requestCode) {
- case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- dothecam = true;
- } else {
- dothecam = false;
- }
- return;
- }
- }
- }
- View scanBorder;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_scan_barcode);
- cameraPreview = (SurfaceView) findViewById(R.id.camera_preview);
- scanBorder = findViewById(R.id.scanBorder);
- createCameraSource();
- }
- @Override
- protected void onResume() {
- super.onResume();
- Toast.makeText(ScanBarcodeActivity.this, scanBorder.getLayoutParams().width+"", Toast.LENGTH_SHORT).show();
- }
- private void createCameraSource() {
- DisplayMetrics metrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(metrics);
- BarcodeDetector detector_1 = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build();
- BoxDetector detector = new BoxDetector(detector_1,metrics.widthPixels*3/5,metrics.widthPixels*3/5);
- final CameraSource cameraSource = new CameraSource.Builder(this, detector)
- .setAutoFocusEnabled(true)
- .setRequestedPreviewSize(2018, 2048)
- .build();
- cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() {
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- try {
- if (ActivityCompat.checkSelfPermission(ScanBarcodeActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
- if (ActivityCompat.shouldShowRequestPermissionRationale(ScanBarcodeActivity.this,
- Manifest.permission.CAMERA)) {
- } else {
- ActivityCompat.requestPermissions(ScanBarcodeActivity.this,
- new String[]{Manifest.permission.CAMERA},
- MY_PERMISSIONS_REQUEST_READ_CONTACTS);
- }
- }
- if(!dothecam)
- return;
- cameraSource.start(cameraPreview.getHolder());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- cameraSource.stop();
- }
- });
- detector.setProcessor(new Detector.Processor<Barcode>() {
- @Override
- public void release() {
- }
- @Override
- public void receiveDetections(Detector.Detections<Barcode> detections) {
- final SparseArray<Barcode> barcodes = detections.getDetectedItems();
- if(barcodes.size()>0){
- Intent intent = new Intent();
- intent.putExtra("barcode",barcodes.valueAt(0));
- setResult(CommonStatusCodes.SUCCESS,intent);
- finish();
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement