AVCaptureMetaDataOutput
- A partir de iOS 7
Scan códigos UPC, códigos QR, códigos de barras y de todas las variedades con AVCaptureMetaDataOutput, nuevo a iOS 7. Todo lo que necesita hacer es configurarlo como la salida de un AVCaptureSession
, y poner en práctica el método captureOutput:didOutputMetadataObjects:fromConnection:
en consecuencia:
@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
compatible con todos los códigos que has oído hablar de (y probablemente algunos que no lo ha hecho):
AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
http://stackoverflow.com/questions/838724/barcode-framework-for-the-iphone/862656#862656 esta respuesta se vincula a la fuente de la aplicación de código de barras que lee qrcodes. Deberías obtener buena información allí –
zxing definitivamente hace códigos QR en iOS muy bien. Mejor, de hecho, que otros códigos. La aplicación ScanTest de muestra demuestra cómo se usa y decodificará bien los códigos QR. – smparkes