iOS:二维码的扫描
2024-08-28 21:52:10
iOS 中二维码的扫描借用#import <AVFoundation/AVFoundation.h> 实现,会用到<AVCaptureMetadataOutputObjectsDelegate>这个代理,并会调用相机进行扫描,
具体实现步骤如下:
//1.创建捕捉会话
AVCaptureSession *session = [[AVCaptureSession alloc] init]; //2.添加一个输入源
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
[session addInput:input];
self.session = session; //3.添加一个输出源
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[session addOutput:output];
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]]; //4.添加一个预览图层
AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
layer.frame = self.view.bounds;
[self.view.layer addSublayer:layer];
self.layer = layer; // 5.开启扫描
[session startRunning]; #pragma mark - 实现输出源的代理方法
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
if (metadataObjects.count > ) {
AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject];
NSLog(@"%@", object.stringValue); [self.session stopRunning];
[self.layer removeFromSuperlayer];
} else {
NSLog(@"获取数据失败");
}
}
最新文章
- Spring Boot中的事务管理
- 如何快速上手使用STM32库函数
- 推荐相关学习 &; 典型算法、典型特征、典型推荐系统框架
- #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决
- 如何定义DATATABLE,同时赋值
- 在map中根据value获取key
- 文件浏览器及数码相框 -2.3.1freetype_pc
- hdu 5698 瞬间移动(排列组合)
- No.004 Median of Two Sorted Arrays
- 原创:应用串行NOR闪存提升内存处理能力
- SE 2014年4月3日
- unity3d 学习笔记(两)
- VIM编辑器使用
- Docker容器中安装vim
- JAVA课堂测试之一位数组可视化
- java之JVM(二)
- 微服务架构下分布式事务解决方案——阿里GTS
- mysql数据的导入和导出
- 十大web安全扫描工具
- 【Ray Tracing The Next Week 超详解】 光线追踪2-5