iOS实现二维码的扫描功能
直接上代码,就不多废话了
//
//ViewController.m
//QRCode
//
//Createdbychenchenon15/7/30.
//Copyright(c)2015年BSY.Allrightsreserved.
//
#import<AVFoundation/AVFoundation.h>
#import"ViewController.h"
@interfaceViewController()<AVCaptureMetadataOutputObjectsDelegate>
@end
@implementationViewController
-(void)viewDidLoad{
[superviewDidLoad];
AVCaptureSession*session=[[AVCaptureSessionalloc]init];
AVCaptureDevice*device=[AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
NSError*error=nil;
AVCaptureDeviceInput*input=[AVCaptureDeviceInputdeviceInputWithDevice:device
error:&error];
if(input){
[sessionaddInput:input];
}else{
NSLog(@"Error:%@",error);
}
AVCaptureMetadataOutput*output=[[AVCaptureMetadataOutputalloc]init];
//设置扫码支持的编码格式(如下设置条形码和二维码兼容)
[outputsetMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeEAN8Code,AVMetadataObjectTypeCode128Code]];
[outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];
[sessionaddOutput:output];
[sessionstartRunning];
}
#pragmamark-AVCaptureMetadataOutputObjectsDelegate
-(void)captureOutput:(AVCaptureOutput*)captureOutput
didOutputMetadataObjects:(NSArray*)metadataObjects
fromConnection:(AVCaptureConnection*)connection
{
NSString*QRCode=nil;
for(AVMetadataObject*metadatainmetadataObjects){
if([metadata.typeisEqualToString:AVMetadataObjectTypeQRCode]){
//Thiswillneverhappen;nobodyhaseverscannedaQRcode...ever
QRCode=[(AVMetadataMachineReadableCodeObject*)metadatastringValue];
break;
}
}
NSLog(@"QRCode:%@",QRCode);
}
-(void)didReceiveMemoryWarning{
[superdidReceiveMemoryWarning];
//Disposeofanyresourcesthatcanberecreated.
}
@end