1

I am working on a project that barcode-scanner is extensively used in. I used google-vision barcode scanner and successfully implemented. However whenever i try to scan a barcode, the apk repeats same results more than one times. Thank you in advance.

createCameraSource()

    private void createCameraSource() {
    final BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.EAN_13 | Barcode.EAN_8)
            .build();
    final CameraSource cameraSource = new CameraSource
            .Builder(this, barcodeDetector)
            .setAutoFocusEnabled(true)
            .setRequestedPreviewSize(1600, 1024)
            .build();

    this.cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            if (ActivityCompat.checkSelfPermission(Entrance.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            try {
                cameraSource.start(cameraView.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();
        }
    });

    barcodeDetector.setProcessor(new BarcodeDetector.Processor<Barcode>() {
        @Override
        public void release() {
        }

        @Override
        public void receiveDetections(BarcodeDetector.Detections<Barcode> detections) {
            final SparseArray<Barcode> barcodes = detections.getDetectedItems();
            if (barcodes.size() > 0) {

                edx.post(new Runnable() {    // Use the post method of the TextView
                    public void run() {
                        edx.setText(barcodes.valueAt(0).displayValue);

                   }

          }
    });
}
istaka
  • 15
  • 6

0 Answers0