2013-03-10 16 views
11

Sto sviluppando un'applicazione per la nostra attività locale. Ho già la videocamera live in un UIImageView, ora ho bisogno di sapere come leggere i codici QR dal UIImageView e visualizzare il contenuto (0000-KKP0-2013) in un'etichetta.Come creare un lettore di codici QR per iOS

Quindi, in pratica, ho bisogno di uno scanner di codici QR che stia leggendo un codice QR e che salvi il contenuto in una stringa. Ho già usato ZXing ("Zebra Crossing") ma non è compatibile con iOS 6 e non funzionerà. C'è un codice facile per ottenere il contenuto del codice QR in una stringa?

Grazie!

Questo è il codice che sto usando nel mio file .m:

#import "ZBarSDK.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize vImagePreview;    

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 

    vImagePreview = nil; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 


    //----- SHOW LIVE CAMERA PREVIEW ----- 
    AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
    session.sessionPreset = AVCaptureSessionPreset352x288; 

    /*CALayer *viewLayer = self.vImagePreview.layer; 
    NSLog(@"viewLayer = %@", viewLayer);*/ 

    AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 

    captureVideoPreviewLayer.frame = self.vImagePreview.bounds; 
    [self.vImagePreview.layer addSublayer:captureVideoPreviewLayer]; 

    AVCaptureDevice *device = [self frontCamera]; 

    NSError *error = nil; 
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; 
    if (!input) { 
     // Handle the error appropriately. 
     NSLog(@"ERROR: trying to open camera: %@", error); 

     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"QReader" 
           message:[NSString stringWithFormat:@"ERROR: Versuch die Kamera zu öffnen ist fehlgeschlagen [%@]",error] 
           delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

     alert.tag = 1; 

     [alert show]; 
    } 
    [session addInput:input]; 

    [session startRunning]; 

    } 

- (AVCaptureDevice *)frontCamera { 
    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for (AVCaptureDevice *device in devices) { 
     if ([device position] == AVCaptureDevicePositionFront) { 
      return device; 
     } 
    } 
    return nil; 
} 

Ora ho bisogno di sapere come leggere il codice QR dal vImagePreview con l'ZBarSDK. E non posso uso un UIPickerView

+0

Libzbar, pe rhaps? –

+0

Questo è abbastanza diverso da quello che hai già fatto. Sì: hai l'anteprima della fotocamera, ma hai ancora bisogno dell'algoritmo necessario per decodificare qualsiasi codice qr visibile nell'immagine. Poiché esistono possibilità esistenti (Zbar, Libzbar, zXingObjc, ecc.), È meglio usarle. –

+0

zxing è compatibile con iOS 6. – smparkes

risposta

9

Prova ZBar: http://zbar.sourceforge.net/iphone/sdkdoc/install.html

Stiamo utilizzando con successo nella nostra applicazione che supporta iOS 4 a iOS 6.1

Nel mio caso io uso ZBarReaderView - per vedere l'anteprima della fotocamera , che rileva e restituisce automaticamente il codice scansionato.

Avrete bisogno di:

#import "ZBarSDK.h" 


ZBarReaderView *readerView; 

aggiungere questo: <ZBarReaderViewDelegate>

e poi:

[readerView.scanner setSymbology:ZBAR_QRCODE config:ZBAR_CFG_ENABLE to:0]; 
readerView.readerDelegate = self; 

[readerView start]; 

- (void)readerView:(ZBarReaderView *)view didReadSymbols: (ZBarSymbolSet *)syms fromImage:(UIImage *)img 
{ 
    for(ZBarSymbol *sym in syms) 
    { 
     NSLog(@"Did read symbols: %@", sym.data); 

    } 
} 

In ogni modo, basta seguire queste istruzioni:

http://zbar.sourceforge.net/iphone/sdkdoc/tutorial.html

e poi provalo - vedi se funziona per te.

EDIT

Qui ho caricato progetto di esempio ho preso da qui: https://github.com/arciem/ZBarSDK

Ha permesso fotocamera sul davanti. Testato - con successo legge il codice a barre tramite fotocamera frontale:

http://www.speedyshare.com/fkvqt/download/readertest.zip

o

Una volta avviata l'applicazione - è mostrato fotocamera anteriore - scanner è 200x200 grande e come una visualizzazione secondaria. http://www.speedyshare.com/QZZU5/download/ReaderSample-v3.zip

+0

Grazie, ma ho bisogno di ZBarCaptureReader e non ci sono documentazioni su questo nella documentazione. Ho già il feed della telecamera live in un UIImageView ma non so come leggere il feed. E non ho una solida conoscenza dell'infrastruttura di AVCapture. Potete fornirci qualche codice per favore? Aggiornerò la mia domanda con il mio codice usato –

+0

Grazie, ma come posso impostare UIImageView che dovrebbe essere scansionato? E dovrei impostare un Timer, quindi esegue la scansione in un intervallo di tempo o è controllato dall'SDK? –

+0

C'è un modo per usare la fotocamera frontale? –

2

Abbiamo esaminato questo non molto tempo fa. ZBar sembra buono, ma è con licenza LGPL, che è not suitable for use on the App Store. Alla fine sono andato con ZXingObjC.

+2

da: http://zbar.sourceforge.net/iphone/sdkdoc/licensing.html "riferendosi alla GPL, che è significativamente diversa dalla LGPL che si riferisce a una versione diversa della LGPL; utilizziamo intenzionalmente la versione 2.1 , che ha specifiche eccezioni di collegamento statico non è nemmeno un avvocato e troppo pigro per leggere l'intera licenza Fondamentalmente, se si sfruttano le sezioni appropriate della licenza, dovrebbe essere pienamente compatibile con le restrizioni ei requisiti dell'App Store. " - Quindi sarebbe ok usarlo in Appstore. –

+0

Non lo uso nell'App Store, è solo per uso privato, quindi posso usarlo. –

+1

@Guntis: sono a conoscenza di ciò che ZBar dice in merito; Penso che si sbagliano. Così fa la FSF: http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement – Simon

1

se si desidera testare i codici qr qui ci sono alcune applicazioni per iphone che potrebbero tornare utili.iphone qr scanner

0

questo fuori con la mela in modo nativo implementato Qr code

Problemi correlati