iOS AV Foundation 二維碼掃描 02 掃碼

來源:互聯網
上載者:User

標籤:二維碼   av foundation   

AVFoundation支援以下一維和二維碼的掃描:

  • QR code
  • Aztec
  • EAN13
  • EAN8
  • UPC-E
  • PDF417
  • Code 93
  • Code 39
  • Code 39 mode 41

QR code就是我們所熟知的二維碼。

開啟ViewController.m,添加以下執行個體變數:

AVCaptureMetadataOutput *_metadataOutput;
當從視訊框架中檢測到中繼資料時,AVCaptureMetadataOutput會調用應用程式的回呼函數。AV Foundation支援兩種類型的中繼資料:機器可讀的編碼和Face Service。

添加以下代碼到setupCaptureSession的最後來實現對中繼資料的捕捉和處理:

    _metadataOutput = [[AVCaptureMetadataOutput alloc] init];    dispatch_queue_t metadataQueue = dispatch_queue_create("com.yaming.ColloQR.metadata", 0);    [_metadataOutput setMetadataObjectsDelegate:self queue:metadataQueue];        if([_captureSession canAddOutput:_metadataOutput])    {        [_captureSession addOutput:_metadataOutput];    }
這裡,我們首先建立AVCaptureMetadataOutput的執行個體,然後為其建立一個dispatch queue,這樣避免在回呼函數被調用時,阻塞主線程。

接下來,聲明本類遵循AVCaptureMetadataOutputObjectsDelegate協議:

@interface ViewController () <AVCaptureMetadataOutputObjectsDelegate>
實現代理方法:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{    [metadataObjects enumerateObjectsUsingBlock:^(AVMetadataObject *obj,                                                  NSUInteger idx,                                                  BOOL *stop)     {         NSLog(@"Metadata: %@", obj);     }];}
每當AVCaptureMetadataOutput類檢測到新的中繼資料時,調用captureOutput方法,在captureOutput方法中,我們列印所有檢測到的中繼資料。

修改startRunning方法,在最後添加如下代碼:

    _metadataOutput.metadataObjectTypes = _metadataOutput.availableMetadataObjectTypes;
這樣做的目的是設定要檢測的中繼資料類型為所有類型。

編譯運行,掃描以下二維碼將得到如下輸出:



2015-03-21 14:51:42.289 ColloQR[680:176124] Metadata: <AVMetadataMachineReadableCodeObject: 0x170221540, type="org.iso.QRCode", bounds={ 0.4,0.2 0.1x0.3 }>corners { 0.4,0.5 0.5,0.5 0.5,0.2 0.4,0.2 }, time 31026866447458, stringValue "iOS二維碼掃描"
這樣我們就完成了使用AV Foundation進行二維碼掃描的功能。從log中可以看到,有bounds和conrners資訊,下一節我們將利用這個資訊,當掃碼成功時,為使用者提供可視的反饋。

轉載請註明出處:http://blog.csdn.net/yamingwu/article/details/44515625

iOS AV Foundation 二維碼掃描 02 掃碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.