2011-05-05 21 views
41

Quiero crear una aplicación basada en lector de código QR.Lector de código QR para iPhone

¿Con qué biblioteca puedo crear mi aplicación?

Nota: He buscado en google. Siempre recibo zxing. Descargué el proyecto zxing. Pero el problema es; Ejecuto la aplicación. Pero está leyendo solo los códigos de barras . No hay opción de leer el código QR.

Por favor, dígame cómo hacer esto ...

gracias por adelantado.

+1

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í –

+1

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

Respuesta

49

ZBarSDK es otra opción. Una biblioteca muy capaz.

ACTUALIZACIÓN de enero de 2014

A partir de iOS7, AVCaptureDevice ahora incluye la capacidad de leer códigos de barras (de todo tipo) y devolver un valor legible por humanos. Si se dirige a iOS7 +, este es el camino a seguir. ZBarSDK sigue siendo ideal para el soporte previo a iOS7, por supuesto.

+1

No he lanzado nada al usarlo, pero por lo que he probado, una biblioteca confiable, también ofrece un módulo bastante bueno para la captura (por ejemplo, resalta el código, etc.) y es bastante fácil de entender. –

+0

ZBarSDK es una versión de licencia gratuita? ¿Puedo usar ZBarSDK para mi aplicación paga? – jfalexvijay

+1

Ver http://zbar.sourceforge.net/iphone/sdkdoc/licensing.html –

3

Probar ZXingObjC funcionando genial y fácil de integrar.

Además, puede definir el tamaño de la ventana del escáner dentro de su vista.

28

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 
+0

Esto me ahorró toneladas y toneladas de molestias, habría comenzado a integrar los SDK anteriores ... también esto es una buena lectura: http://www.renaudpradenc.com/?p=453 – Wirsing

+2

Ojalá pudiera +1 esto dos veces.Una vez para el código y otra para el uso de '@ import'. –

+4

Para obtener un ejemplo más completo que también maneja cosas como cambios de orientación, reanudación desde el fondo y tal, consulte https://github.com/magmatic/BMCodeScanner: utiliza la API de AVFoundation nativa. – SaltyNuts

0

para su referencia puede usar webqr.com y es una biblioteca que puede usar para decodificar también el código QR y la codificación. Pero para diferentes navegadores como Safari, Chrome, IE, Firefox, puede agregar el complemento para Esto. Espero que te ayude por completo.