gpt4 book ai didi

java - Android应用程序中使用循环解码QR码的方法

转载 作者:行者123 更新时间:2023-12-01 15:15:20 26 4
gpt4 key购买 nike

我正在实现一种方法来解码 QR 码并返回 Android 应用程序代码中包含的字符。我想运行此方法,直到 QR 码成功解码并且不返回空值。

它在第一个循环中正确运行。但是,当它在第一次循环时无法读取它时,自第二次循环以来它很少解码代码。有时它也会进入无限循环。

如果您有任何建议,请告诉我。

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();
}

最佳答案

您创建了一个看似繁忙的等待循环。您需要完全重写逻辑。

startActivityForResult 不返回值,因此您不应该在调用 Activity 时使用同一方法处理结果。您应该在onActivityResult 中进行处理。

请参阅此处的文档: http://developer.android.com/reference/android/app/Activity.html#StartingActivities

就您而言:

  • 删除循环,不对 readQRCode 中的“result”执行任何操作
  • 添加一个 onActivityResult 方法并在其中执行 startActivityForResult 之后的所有操作
  • 如果要循环,请从 startActivityForResult 调用 readQRCode

最终结果不应有任何类型的循环。

顺便说一句:如果您希望我们更正代码,我们还需要查看您当前的 startActivityForResult 中的内容。

关于java - Android应用程序中使用循环解码QR码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com