如何在显示对话框时停止捕获的相机

How can i stop the camera capturs while a Dialag box is showing

您好,在 android 中有此代码,如果您看到符合注释 // 显示对话框 当我 运行 应用程序一切正常时,我可以正确读取二维码。 但是当我读取一个有效的二维码并弹出对话框时,相机会继续读取二维码,所以如果我让 phone 在同一位置,二维码会被读取很多次。

我想停止读取相机,直到我在对话框中按下是或否。

(我是 Android 的新人,所以请帮助我。!!)

问候

    imageAnalysis.setAnalyzer(ContextCompat.getMainExecutor(this), new QRCodeImageAnalyzer(new QRCodeFoundListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onQRCodeFound(String _qrCode) throws InterruptedException {
            qrCode = _qrCode;
            Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            vibrator.vibrate(300);
            alertDialog(qrCode.toString()); **// show a dialag box**
        }

        @Override
        public void qrCodeNotFound() {

        }
    }));
    Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner)this, cameraSelector, imageAnalysis, preview);

我终于找到了解决办法!感觉真好!!

我创建了一个 nuew class 这样的

@RequiresApi(api = Build.VERSION_CODES.O)
private void stopCamera(@NonNull ProcessCameraProvider cameraProvider){
    cameraProvider.unbindAll();
}

在显示对话框警报之前(因为找到了二维码)我调用了 stopCamera() 之后当用户在对话框中按是或否时我再次调用 class StartCamera();

这是我的 startCamera class

@RequiresApi(api = Build.VERSION_CODES.O)
private void startCamera() {
    cameraProviderFuture.addListener(() -> {
        try {
            ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
            bindCameraPreview(cameraProvider);
        } catch (ExecutionException | InterruptedException e) {
            Toast.makeText(this, "Error starting camera " + e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }, ContextCompat.getMainExecutor(this));

非常感谢,我希望这对某人有所帮助。