Tôi đang sử dụng Zxing-android-embedded (https://github.com/journeyapps/zxing-android-embedded) để quét mã QR. Tôi đã nhập thư viện từ github. Khi ứng dụng bắt đầu, máy ảnh sẽ quét mã liên tục miễn là máy ảnh được đặt trên mã vạch. Tôi muốn dừng quét (nhưng không xem trước máy ảnh) khi mã vạch được phát hiện và hiển thị hộp thoại có nút "Xác nhận", nút "Hủy" và hộp nhập. Khi người dùng nhấn nút "Xác nhận" hoặc "Hủy", nó sẽ bắt đầu quét lại.Cách dừng quét liên tục bằng zxing-android-embedded trong Android
Tôi đã gọi số barcodeView.pause();
ở đầu phương thức giải mã() tạm dừng xem trước máy ảnh. Ngoài ra, thêm barcodeView.resume();
bên trong phương thức onClick của "dialogConfirmClick" và "dialogCancelClick". Nhưng phương pháp barcodeView.pause();
tạm dừng quét cũng như xem trước máy ảnh.
Đây là class- tôi
public class MyScanActivity extends Activity {
private static final String TAG = MyScanActivity.class.getSimpleName();
private CompoundBarcodeView barcodeView;
private BeepManager beepManager;
private DialogInterface.OnClickListener dialogCanselClick;
private AlertDialog dialog;
private BarcodeCallback callback = new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
if (result.getText() != null) {
handleDecode(result);
}
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints) {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.continuous_scan);
barcodeView = (CompoundBarcodeView) findViewById(R.id.barcode_scanner);
barcodeView.decodeContinuous(callback);
beepManager = new BeepManager(this);
dialogCancelClick = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
barcodeView.resume();//Resume scanning
dialog.dismiss();
}
};
}
public void handleDecode(BarcodeResult rawResult) {
barcodeView.pause();//Pause preview
String result = rawResult.getText();
beepManager.playBeepSoundAndVibrate();
DialogInterface.OnClickListener dialogOkClick = new DialogInterface.OnClickListener() { // OK
// button
@Override
public void onClick(DialogInterface dialog, int which) {
if (writeNote) {
EditText txtNote = (EditText) promptsView.findViewById(R.id.txt_dialog_note);
//code to merge value of txtNote with result
}
dialog.dismiss();
barcodeView.resume();//Resume scanning after pressing confirm button
Toast.makeText(MyScanActivity.this, R.string.dialog_save_qr_alert, Toast.LENGTH_SHORT).show();
}
};
AlertDialog dialog = DialogHelper.CreateDialog(this, DialogHelper.SAVE_QR_CODE, result, dialogOkClick, dialogCancelClick, promptsView);
dialog.show();
}
@Override
protected void onResume() {
super.onResume();
barcodeView.resume();
}
@Override
protected void onPause() {
super.onPause();
barcodeView.pause();
}
public void pause(View view) {
barcodeView.pause();
}
public void resume(View view) {
barcodeView.resume();
}
public void triggerScan(View view) {
barcodeView.decodeSingle(callback);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}
}