Android条码阅读器Firebase

时间:2018-08-27 20:11:33

标签: android firebase barcode

嗨,我有问题,希望您能帮助我。

我正在使用android studio创建一个应用程序来读取条形码,然后在回收站视图中显示正确的项目

当我正确阅读代码时,它会显示正确的项目(半秒),但是当它错误地阅读代码时,它会卡在上面,如果我正确阅读了代码,则过一会儿(30秒)后,它会显示项

有时读取不正确后,直到重新启动应用程序为止,它永远不会显示该项目

我正在使用Firebase获取商品信息,甚至是图片的网址

这是代码的一部分

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

预先感谢

致谢

0 个答案:

没有答案