zxing ソース コードをライブラリとして使用して、アプリに qr コード スキャン機能を統合しました。私のアクティビティは、Capture Activity を拡張し、Capture Activity クラスの handleDecode メソッドをオーバーライドします。オーバーライド メソッド handleDecode 内の私のコードは次のようになります。
@Override
public void handleDecode(Result rawResult, Bitmap barcode){
String result = rawResult.getText();
if(result==WRONG_CODE){
//do nothing
}else if(result==RIGHT_CODE){
//do something
}
}
アイデアはとてもシンプルです。ユーザーが正しいコードをスキャンした場合は何かを行い、そうでない場合は正しいコードを取得するまでスキャンを続けます。ただし、問題は、zxing スキャナーが 1 回しかスキャンしないことです。返された qr コードが間違っている場合、ユーザーはスキャナーが再度スキャンするためにアクティビティを再開する必要があります。
結果コードが間違っている場合は、このようなことを試しましたが、機能しません。
Hanlder handler = new Handler();
handler.sendEmptyMessageDelayed(R.id.preview_id, CaptureActivity.BULK_MODE_SCAN_DELAY_MS