2016-03-03 52 views
0

我在TextureView中有一个相机预览。如何将相机帧发送到我的条形码检测器?发送帧到检测器

barcodeDetector = new BarcodeDetector.Builder(this) 
    .setBarcodeFormats(Barcode.ALL_FORMATS) 
    .build(); 

barcodeDetector.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) { 
      // do the operation 
     } 
    } 
} 

回答

2

您需要创建一个摄像头实例并将其链接到您的探测器(已被链接到你的处理器)

mCameraSource = new CameraSource.Builder(context, barcodeDetector) 
        .setFacing(CameraSource.CAMERA_FACING_BACK) 
        .setRequestedFps(15.0f) 
        .build(); 

将相机连接到您的SurfaceView,并开始使用它的代码是这样(当SurfaceView是availble的)

mCameraSource.start(mSurfaceView.getHolder()); 

你有一个工作例如通过谷歌提供here

对于TextureView使用手动检测

public void onSurfaceTextureUpdated(SurfaceTexture surface) { 
      // Invoked every time there's a new Camera preview frame 
      mTextureView.getBitmap(bitmap); 
      Frame frame = new Frame.Builder().setBitmap(bitmap).build(); 
      SparseArray<Barcode> barcodes = barcodeDetector.detect(frame); 
     } 
+0

有SurfaceView在这个例子。我需要使用TextureView。 –

+0

用'TextureView'代替'SurfaceView'是很容易的(你可以简单地从[JavaDoc](http://developer.android.com/reference/android/view/TextureView.html)) –

+0

这是Google的建议。如何实现它? https://github.com/googlesamples/android-vision/issues/15#issuecomment-135068919 –