我调用以下函数以从布局中有Activity
的{{1}}开始扫描QR码。
DecoratedBarcodeView
默认情况下,它会扫描所有条形码,我想将其限制为QR码。
我尝试添加以下几行来启动意图,以便private void openBackCamera() {
captureManager = new CaptureManager(this, decoratedBarcodeView);
captureManager.initializeFromIntent(getIntent(), savedInstanceState);
captureManager.decode();
CameraSettings cameraSettings = decoratedBarcodeView.getBarcodeView().getCameraSettings();
cameraSettings.setAutoFocusEnabled(false);
cameraSettings.setFocusMode(CameraSettings.FocusMode.CONTINUOUS);
cameraSettings.setRequestedCameraId(Camera.CameraInfo.CAMERA_FACING_BACK);
decoratedBarcodeView.pause();
decoratedBarcodeView.getBarcodeView().setFrameRectColor(Color.WHITE);
decoratedBarcodeView.getBarcodeView().setFramingRectSize(getSize());
decoratedBarcodeView.getViewFinder().setVisibility(View.VISIBLE);
decoratedBarcodeView.decodeSingle(mBarcodeResult);
decoratedBarcodeView.resume();
}
在用captureManager
初始化时无济于事。
getIntent()
如何限制我的设置以仅扫描QR码?
答案 0 :(得分:1)
当您仅使用DecoratedBarcodeView
时,以下是答案:
List<BarcodeFormat> formats = new ArrayList<>();
formats.add(BarcodeFormat.QR_CODE);
decoratedBarcodeView.getBarcodeView().setDecoderFactory(new DefaultDecoderFactory(formats));
然后,您无需使用Intent
和CaptureManager
。
答案 1 :(得分:0)
使用IntentIntegrator
生成具有QR码格式的启动意图,而不是直接在启动意图中设置额外的意图。
public static Intent getLaunchIntent(Activity activity) {
IntentIntegrator integrator = new IntentIntegrator(activity);
integrator.setCaptureActivity(QrCodeScanActivity.class);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
return integrator.createScanIntent();
}
没有明确的例子。希望这会对某人有所帮助。