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

标签 java android qr-code zxing

我正在实现一种方法来解码 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/

相关文章:

python-3.x - 使用 OpenCV QRCodeDetector 读取条形码

java - 将程序连接到 SQLite 数据库

java - 比较两个字符串 s = "ja".concat ("va"); s1=s.intern();与 == 运算符返回 false。为什么?

javascript - 从 Android native 浏览器上传时文件类型为空字符串

android - 适用于 iOS 和 Android 应用程序的相同 Firebase 实例

iphone - PhoneGap 和 Zxing QrCode - 构建问题

Java:动态属性

java - 找不到注释处理器 'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor'

android - 如何在视频系统中捕获和编码音频_Android

swift - 如何在swift中生成带有参数的QRCode图像?