首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用多个条形码检测

如何禁用多个条形码检测
EN

Stack Overflow用户
提问于 2017-02-08 11:58:57
回答 2查看 5.5K关注 0票数 9

我试图在同一时间禁用多个Barcode检测。如何使用MultiProcessor禁用Google Vision API,我无法从官方站点这里找到任何解决方案

我已经从这里下载了样本

代码语言:javascript
复制
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
    BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay);
    barcodeDetector.setProcessor(
            new MultiProcessor.Builder<>(barcodeFactory).build());

即使删除以下一行,我也无法检测到。

代码语言:javascript
复制
 barcodeDetector.setProcessor(
        new MultiProcessor.Builder<>(barcodeFactory).build());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-11 13:45:16

通过探索示例代码和一些逻辑实现,我同时解决了这个多重Barcode检测问题。

解决方案是:停止mPreview并在1秒delay之后重新启动

创建回调侦听器

代码语言:javascript
复制
public interface BarCodeDetectListener {
void onBarCodeDetect(Barcode barcode);
}

BarcodeGraphicTracker

当设备在Barcode内部检测到onNewItem()回调到Barcodefragment

代码语言:javascript
复制
class BarcodeGraphicTracker extends Tracker<Barcode> {
...
...
private BarcodeGraphic mGraphic;
private BarCodeDetectListener barCodeDetectListener;
...

 /**
  * Start tracking the detected item instance within the item overlay.
  */
 @Override
 public void onNewItem(int id, Barcode item) {
    mGraphic.setId(id);
    barCodeDetectListener.onBarCodeDetect(item);
 }
}

BarCodeFragment

代码语言:javascript
复制
@SuppressLint("NewApi")
public class SurveyBarCodeFragment extends Fragment implements BarCodeDetectListener {
  ...
  private CameraSourcePreview mPreview;
  private CameraSource mCameraSource;
  ...



 @Override
 public void onBarCodeDetect(final Barcode barcode) {
  new Handler().post(new Runnable() {
        @Override
        public void run() {
            mPreview.stop(); //Stop preview
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    try {
                        if (ActivityCompat.checkSelfPermission(getApplicationContext(), 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;
                        }
                        //Start preview after 1s delay
                        mPreview.start(mCameraSource);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }, 1000);
        }
    });

 }
}
票数 1
EN

Stack Overflow用户

发布于 2017-02-08 12:07:43

更新BarcodeGraphicTracker并实现onNewItem函数,如下所示:

代码语言:javascript
复制
public class BarcodeGraphicTracker extends Tracker<Barcode> {

        private static final String TAG = "Barcode-reader";
        @Override
        public void onNewItem(int id, final Barcode item) {
            Log.d(TAG, "Detected!!"+ item.toString());
                Runnable r=new Runnable()
                {
                    public void run()
                    {
                        //write your code here
                        }
                    }
                };
                getActivity().runOnUiThread(r);
        }

        @Override
        public void onUpdate(Detector.Detections<Barcode> detectionResults, Barcode item) {

        }
    }

BarcodeTrackerFactory为:

代码语言:javascript
复制
public class BarcodeTrackerFactory implements MultiProcessor.Factory<Barcode> {

        @Override
        public Tracker<Barcode> create(Barcode barcode) {
            return new BarcodeGraphicTracker();
        }

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42112519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档