我想创建基于QR码阅读器的应用程序。
使用哪个库,我可以创建我的应用程序?
注意:我在谷歌搜索过。我总是得到 zxing 。我下载了zxing项目。但问题是;我运行应用程序。但它只读取条形码。没有选择阅读QR码。
请告诉我怎么做......
先谢谢。
答案 0 :(得分:49)
ZBarSDK是另一种选择。一个非常有能力的图书馆。
更新 2014年1月
从iOS7开始,AVCaptureDevice
现在包括读取条形码(各种条形码)并返回人类可读值的功能。如果你的目标是iOS7 +,那么这就是你要走的路。当然,ZBarSDK仍然非常适合iOS7之前的支持。
答案 1 :(得分:27)
AVCaptureMetaDataOutput
- 从iOS 7开始
使用AVCaptureMetaDataOutput扫描所有品种的UPC,QR码和条形码,这是iOS 7的新功能。您需要做的就是将其设置为AVCaptureSession
的输出,并实现captureOutput:didOutputMetadataObjects:fromConnection:
方法相应:
@import AVFoundation;
AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:&error];
if (input) {
[session addInput:input];
} else {
NSLog(@"Error: %@", error);
}
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[session addOutput:output];
[session startRunning];
#pragma mark - AVCaptureMetadataOutputObjectsDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputMetadataObjects:(NSArray *)metadataObjects
fromConnection:(AVCaptureConnection *)connection
{
NSString *QRCode = nil;
for (AVMetadataObject *metadata in metadataObjects) {
if ([metadata.type isEqualToString:AVMetadataObjectTypeQRCode]) {
// This will never happen; nobody has ever scanned a QR code... ever
QRCode = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
break;
}
}
NSLog(@"QR Code: %@", QRCode);
}
AVFoundation
支持您听过的所有代码(可能还有一些您没有的代码):
AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
答案 2 :(得分:3)
尝试ZXingObjC工作良好且易于集成。
同样,您可以在视图中定义扫描仪窗口的大小。
答案 3 :(得分:-1)
供您参考,您可以使用 webqr.com ,它可以用来解码QR码和编码的库。但对于不同的浏览器,如safari,Chrome,IE,Firefox,您可以为此添加插件。希望这对你有所帮助。