2014-09-22 11 views
9

में ठीक से काम नहीं कर रहा है। मेरे पास ऐप ZBar के साथ एकीकृत है। यह आईओएस 7.1 और नीचे पूरी तरह से काम कर रहा है, लेकिन आईओएस 8.0 डिवाइस में मुझे लगता है कि कैमरा दृश्य सबसे पहले काले रंग में दिखाया गया है। हालांकि, अगर मैं पृष्ठभूमि स्थिति में ऐप भेजता हूं और मैं इसे फिर से अग्रभूमि भेजता हूं, कैमरा दृश्य खुला रहता है, तो यह काम करता है। क्या किसी ने इसका अनुभव किया है?जेडबार एसडीके और कैमरा आईओएस 8

धन्यवाद

+0

मेरे उपयोगकर्ताओं में से एक आईफोन 6 पर एक ही समस्या का अनुभव कर रहा है। क्या आपने ज़ेडबार डेवलपर्स को एक बग रिपोर्ट सबमिट की है? – nanako

+0

जेडबार 32 बिट कोड का उपयोग कर रहा है और किसी ने अभी तक 64 बिट तक पोर्ट नहीं किया है। यहां स्रोत कोड है - अंतिम प्रतिबद्धता 2 साल पहले थी - https://github.com/ZBar/ZBar। यह आईओएस 6 पर अच्छी तरह से काम करता है। मुझे यह समस्या है और मैं एक प्रतिस्थापन एसडीके की तलाश में हूं - निकटतम मुफ्त 3 पार्टी एसडीके ज़ेडिंग है लेकिन उनके पास 64 बिट के साथ भी समस्याएं हैं), जब तक कि तीसरे पक्ष के एसडीके को सबसे व्यवहार्य नहीं बनाया जाता विकल्प आईओएस के साथ एम्बेडेड है (नीचे देखें) यह आपको क्यूआर कोड स्कैन करने और बोनस पीडीएफ 417 और एज़्टेक कोड के रूप में स्कैन करने की क्षमता देगा - हालांकि 1 डी बारकोड (यूपीसी, सीओडीई 128, आदि) के लिए समर्थन स्कैनिंग नहीं है – Paulo

+0

मैंने अभी कोशिश की है आईओएस 8 में ज़िंग का यह संस्करण - ऐसा लगता है - https://github.com/TheLevelUp/ZXingObjC – Paulo

उत्तर

0

आप केवल QR कोड को स्कैन की जरूरत है, यह देशी साधन के साथ ऐसा करना बहुत आसान है:

अपने कुलपति की ज में जोड़ें:

#import <AVFoundation/AVFoundation.h> 
@interface FEQRViewController : UIViewController <AVCaptureMetadataOutputObjectsDelegate> 

और में। मीटर

@interface FEQRViewController() 

@property (nonatomic) BOOL isReading; 

@property (nonatomic, strong) AVCaptureSession *captureSession; 
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *videoPreviewLayer; 

-(BOOL)startReading; 

-(void)stopReading; 

@end 

@implementation FEQRViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = ....; 


    self.isReading = NO; 
    self.captureSession = nil; 


    // Do any additional setup after loading the view from its nib. 
} 

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    if (!self.isReading) { 
     if ([self startReading]) { 
      //[self.startButton setTitle:@"Stop" forState:UIControlStateNormal]; 
      [self.statusLabel setText:@"Scanning for QR Code..." ]; 
     } 
    } 
    else{ 
     [self stopReading]; 
     [self.startButton setTitle:@"Start!" forState:UIControlStateNormal]; 
    } 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


-(BOOL)startReading 
{ 
    NSError *error; 
    AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error]; 

    if (!input) { 
     NSLog(@"%@", [error localizedDescription]); 
     return NO; 
    } 

    self.captureSession = [[AVCaptureSession alloc] init]; 
    [self.captureSession addInput:input]; 

    AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init]; 
    [self.captureSession addOutput:captureMetadataOutput]; 

    dispatch_queue_t dispatchQueue; 
    dispatchQueue = dispatch_queue_create("myQueue", NULL); 
    [captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue]; 
    [captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeQRCode]]; 

    self.videoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession]; 
    [self.videoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
    [self.videoPreviewLayer setFrame:self.preview.layer.bounds]; 
    [self.preview.layer addSublayer:_videoPreviewLayer]; 

    [_captureSession startRunning]; 
    return YES; 
} 

-(void)stopReading 
{ 
    [self.captureSession stopRunning]; 

    self.captureSession = nil; 
    [self.videoPreviewLayer removeFromSuperlayer]; 

} 


-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{ 
    if (metadataObjects != nil && [metadataObjects count] > 0) { 

     AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjects objectAtIndex:0]; 
     if ([[metadataObj type] isEqualToString:AVMetadataObjectTypeQRCode]) { 
      [self.statusLabel performSelectorOnMainThread:@selector(setText:) withObject:[metadataObj stringValue] waitUntilDone:NO]; 
      NSURL *url = [NSURL URLWithString:[metadataObj stringValue]]; 
      if (url) 

       [self performSelectorOnMainThread:@selector(goToURL:) withObject:url waitUntilDone:NO]; 

      [self performSelectorOnMainThread:@selector(stopReading) withObject:nil waitUntilDone:NO]; 
      //[self.startButton performSelectorOnMainThread:@selector(setTitle:) withObject:@"Start!" waitUntilDone:NO]; 
      _isReading = NO; 
     } 
    } 
} 

-(void)goToURL:(NSURL *)url 
{ 
    //Handle URL... 
} 

- (IBAction)startButton:(id)sender { 

    if (!self.isReading) { 
     if ([self startReading]) { 
      [self.startButton setTitle:@"Stop" forState:UIControlStateNormal]; 
      [self.statusLabel setText:@"Scanning for QR Code..." ]; 
     } 
    } 
    else{ 
     [self stopReading]; 
     [self.startButton setTitle:@"Start!" forState:UIControlStateNormal]; 
    } 

    _isReading = !_isReading; 
} 

@end 
+0

यह – JSA986

+0

प्रश्न का उत्तर नहीं देता है लेकिन आप सवाल का जवाब देते हैं? @ जेएसए 9 86 –

+2

तो मूल प्रश्न के लिए कोई प्रासंगिकता का उत्तर कोई जवाब देने के लिए बेहतर नहीं है? आपने ओपी के सवाल का जवाब नहीं दिया है, क्यूआर स्कैनर का कोई संदर्भ नहीं था या किसी अन्य समाधान के लिए अनुरोध नहीं था। प्रश्न 'ज़बर' के बारे में है। मुझे अपनी टिप्पणियों के लिए कोई जवाब कम या सही होने का उत्तर पोस्ट करने की आवश्यकता नहीं है – JSA986

0

यह iOS 8

साथ मेरे लिए काम करता
ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
reader.readerDelegate = self; 
reader.supportedOrientationsMask = ZBarOrientationMaskAll; 
[self presentViewController:reader animated:YES completion:nil]; 
[reader viewWillAppear:NO];` 
संबंधित मुद्दे