QR コードをデコードし、Android アプリケーションのコードに含まれる文字を返すメソッドを実装しています。QR コードが正常にデコードされ、null 値が返されなくなるまで、このメソッドを実行したいと思います。
1周目で正常に動きます。しかし、1 ループ目で読み取りに失敗すると、2 ループ目以降はほとんどコードをデコードしません。また、無限ループに陥ることもあります。
何かコツがあれば教えてください。
public String readQRCode(Bitmap file) {
Reader reader = new MultiFormatReader();
Result result = null;
do {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE);
Toast.makeText(this, "Please try again", Toast.LENGTH_LONG).show();
LuminanceSource source = new RGBLuminanceSource(file);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
source));
// Decode
try {
result = reader.decode(binaryBitmap);
} catch (NotFoundException e) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE);
Toast.makeText(this, "Please try again", Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (ChecksumException e) {
e.printStackTrace();
} catch (FormatException e) {
e.printStackTrace();
}
} while (result == null || result.getText() == null);
return result.getText();
}