IOS 自带二维码扫描相关类的一些定义及用法
来源:互联网 发布:微赞源码 编辑:程序博客网 时间:2024/05/23 16:38
1.自带二维码扫描的一些相关类及其定义
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController :UIViewController <AVCaptureMetadataOutputObjectsDelegate>
@property (strong,nonatomic)AVCaptureDevice * device;
@property (strong,nonatomic)AVCaptureDeviceInput * input;
@property (strong,nonatomic)AVCaptureMetadataOutput * output;
@property (strong,nonatomic)AVCaptureSession * session;
@property (strong,nonatomic)AVCaptureVideoPreviewLayer * preview;
@end
- AVCaptureDevice: 一个音视频捕获设备对象代表一个物理捕获设备和与该设备相关的属性。使用该捕获设备对象去配置底层硬件的属性。捕获设备还提供输入数据(比如音频或视频)给捕获会话对象。
- AVCaptureDeviceInput: 该类是AVCaptureInput的一个具体子类用来从AVCaptureDevice类对象捕获数据信息。
-AVCaptureMetadataOutput: 该类对象用于拦截从元数据对象发出的相关捕获,并且将它们转发给委托对象进行处理。您可以使用这个类的实例来处理特定类型的元数据中的输入数据。您使用这个类处理其他的输出对象,通常通过添加一个AVCaptureSession对象作为输出。
-AVCaptureSession: 您使用该类对象协调输入设备的数据流输出。
- AVCaptureVideoPreviewLayer: 该类是CALayer的一个子类正在被一个输入设备捕获用来显示视频。
2.自带二维码扫描的相关类的使用
// Device:设置捕获设备的媒体类型
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// Input:获取捕获设备捕获的数据
_input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];
// Output:用来拦截捕获并将捕获到的数据转发给委托处理 注:最后一句是用来设置捕获的区域(默认是全屏捕获二维码,效果不理想)
_output = [[AVCaptureMetadataOutput alloc]init];
[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[_output setRectOfInterest:CGRectMake(0.5,0.5,0.5,0.5)];
// Session:
_session = [[AVCaptureSession alloc]init];
[_session setSessionPreset:AVCaptureSessionPresetHigh];
if ([_session canAddInput:self.input])
{
[_session addInput:self.input];
}
if ([_session canAddOutput:self.output])
{
[_session addOutput:self.output];
}
_output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode];
// Preview
_preview =[AVCaptureVideoPreviewLayer layerWithSession:_session];
_preview.videoGravity =AVLayerVideoGravityResizeAspectFill;
_preview.frame =self.view.layer.bounds;
[self.view.layer insertSublayer:_preview atIndex:0];
// Start
[_session startRunning];
3.委托方法
#pragma mark AVCaptureMetadataOutputObjectsDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
NSString *stringValue;
if ([metadataObjects count] >0)
{
AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjectsobjectAtIndex:0];
stringValue = metadataObject.stringValue;
}
[_sessionstopRunning];
UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:nil
message:stringValue
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil,nil];
[alert show];
}
待完善!!!
- IOS 自带二维码扫描相关类的一些定义及用法
- iOS自带的二维码扫描功能
- iOS系统自带二维码的生成以及扫描
- 使用 IOS 自带 API 扫描二维码
- iOS_二维码扫描(iOS自带)
- iOS自带扫描 和 生成二维码
- iOS自带扫描 和 生成二维码
- iOS自带扫描 和 生成二维码
- iOS自带扫描 和 生成二维码
- iOS_二维码扫描(iOS自带)
- iOS自带扫描和生成二维码
- ios7自带的扫描二维码功能
- iOS开发 自带二维码扫描(仅支持iOS7及以上系统)
- iOS7自带二维码扫描
- Swift系统自带二维码的扫描使用
- 实现系统自带二维码扫描功能
- 112 系统自带二维码扫描
- iOS的二维码扫描
- jQuery UI Datepicker 选择时分秒
- [Codeforces #296 (Div. 2)]简要题解
- leetcode_103_Binary Tree Zigzag Level Order Traversal
- 【整理】Eclipse反编译插件安装(附links方式安装插件)
- MongoDB的使用详情
- IOS 自带二维码扫描相关类的一些定义及用法
- ConcurrentModificationException异常解决办法
- ASP.NET之Cookie(坑爹的Response.Cookies.Remove)
- opencv246在Visual Statio2012配置时遇到的问题
- 规则 2.1:所有数据库代码统一使用小写字母。
- Chinese film faced plywood for formly concrete usage
- android textview 中的\n直接显示,不换行
- Paraview与vtk学习笔记(二)
- cocos2dx如何显示控制台