Android Barcode Reader Firebase - PullRequest
       6

Android Barcode Reader Firebase

0 голосов
/ 27 августа 2018

Привет, у меня проблема, и я надеюсь, что вы мне поможете.

Я использую android studio, чтобы создать приложение для считывания штрих-кода, а затем показать нужный элемент в представлении переработчика

когда я правильно читаю код, он показывает правильный элемент (полсекунды), но когда он читает код неправильно, он застревает на нем, и если я правильно прочитал код, то через некоторое время (30 секунд) он показывает вещь

иногда после неправильного прочтения никогда не показывает элемент, пока не перезапустит приложение

Я использую Firebase, чтобы получить информацию об элементе и даже URL для изображения

это часть кода

 cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder surfaceHolder) {
            if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                //Request permission
                ActivityCompat.requestPermissions(SearchActivity.this,
                        new String[]{android.Manifest.permission.CAMERA},RequestCameraPermissionID);
                return;
            }
            try {
                cameraSource.start(cameraPreview.getHolder());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

        }

        @Override
        public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
            cameraSource.stop();

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

        }

        @Override
        public void receiveDetections(Detector.Detections<Barcode> detections) {

            final SparseArray<Barcode> qrcodes = detections.getDetectedItems();
            if(qrcodes.size() != 0)
            {
                txtResult.post(new Runnable() {
                    @Override
                    public void run() {
                        //Create vibrate
                        Vibrator vibrator = (Vibrator)getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
                        vibrator.vibrate(1000);
                        txtResult.setText(qrcodes.valueAt(0).displayValue);
                        startSearchEan(txtResult.getText().toString());


                    }

                });

                Log.d("BARCODEE", "run: "+txtResult.getText());
            }
        }
    });
private void startSearchEan(String text) {

    searchAdapter = new FirebaseRecyclerAdapter<Articulo, ArticuloViewHolder>(
            Articulo.class,
            R.layout.articulos_item,
            ArticuloViewHolder.class,
            articuloList.orderByChild("Codebar").equalTo(text)
    ) {
        @Override
        protected void populateViewHolder(ArticuloViewHolder viewHolder, Articulo model, int position) {
            viewHolder.articulo_name.setText(model.getName());
            //Glide.with(getBaseContext()).load(model.getImage()).into(viewHolder.articulo_image);
            ImageLoader imageLoader = ImageLoader.getInstance();
            imageLoader.displayImage(model.getImage(),viewHolder.articulo_image);

            final Articulo local = model;
            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {
                    Intent articuloDetail = new Intent(SearchActivity.this,ArticuloDetail.class);
                    articuloDetail.putExtra("ArticuloId",searchAdapter.getRef(position).getKey());
                    startActivity(articuloDetail);

                }
            });
        }
    };
    recyclerView.setAdapter(searchAdapter);
}

заранее спасибо

Привет

...