public CaptureActivityHandler(
      com.example.darren.scanner.CaptureActivity activity,
      Collection<BarcodeFormat> decodeFormats,
      Map<DecodeHintType, ?> baseHints,
      String characterSet,
      com.example.darren.scanner.camera.CameraManager cameraManager) {
    this.activity = activity;

    // 启动扫描线程
    decodeThread =
        new DecodeThread(
            activity,
            decodeFormats,
            baseHints,
            characterSet,
            new com.example.darren.scanner.view.ViewfinderResultPointCallback(
                activity.getViewfinderView()));
    decodeThread.start();

    state = State.SUCCESS;

    // Start ourselves capturing previews and decoding.
    this.cameraManager = cameraManager;

    // 开启相机预览界面
    cameraManager.startPreview();

    restartPreviewAndDecode();
  }