如何在显示对话框时停止捕获的相机
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));
非常感谢,我希望这对某人有所帮助。
您好,在 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));
非常感谢,我希望这对某人有所帮助。