使用AVFoundation框架无法获取QR码数据

时间:2015-02-10 10:58:53

标签: ios

我使用AVFoundation框架委托方法来读取QR码。它正在阅读几乎所有的QR码和为他们提供结果数据。但是,当我尝试使用某些QR码(例如,在QR图像下方)时,它会预测它是QR码,但不会为其提供任何数据。enter image description here

1 个答案:

答案 0 :(得分:0)

您的示例正在触发内部(C ++)异常。它似乎被[AVAssetCache setMaxSize:]所捕获,这表明此特定示例中的数据已损坏,或者只是为了使AVFoundation处理大。 / p>

因为它是一个内部异常,它(大部分)是默默地失败的。当您尝试从stringValue中提取AVMetadataMachineReadableCodeObject时会发生异常。

因此,如果您测试AVMetadataMachineReadableCodeObject是否存在,您将获得YES,而如果您测试stringValue,则会获得NO。

AVMetadataMachineReadableCodeObject *readableObject = 
(AVMetadataMachineReadableCodeObject *)[self.previewLayer      
         transformedMetadataObjectForMetadataObject:metadataObject];

    BOOL foundObject = readableObject != nil; 
     //returns YES

    BOOL foundString = readableObject.stringValue != nil; 
      //returns NO + triggers internal exception

最好测试字符串而不是对象,并忽略任何返回NO的结果。

更新

在您的评论中,您会询问有关读取此条形码的本机框架解决方案。 AVFoundation 条形码读取的原生框架,因此如果您的样本失败,您将不得不寻找第三方解决方案。

zxing提供了一个iOS端口,但它看起来很旧而且不受支持。

zbarSDK曾经是一个很好的解决方案,但似乎也不支持ios4。由于AVFoundation现在具有内置条形码读取功能,因此这并不令人惊讶。

Accusoft的

This solution确实阅读了样本,但它是专有的并且非常昂贵。

我确实对你的样本内容感到疑惑 - 它看起来像是腐败还是某种奇特的编码...

enter image description here