#import "QRCodeScanViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface QRCodeScanViewController () <AVCaptureMetadataOutputObjectsDelegate>
// 使用掃描二維碼, 需要導(dǎo)入框架 <AVFoundation/AVFoundation.h>
// 手機(jī)震動(dòng), 需要導(dǎo)入框架 <AudioToolbox/AudioToolbox.h>
/**
* 輸入輸出流管道(控制輸入輸出流)
*/
@property (nonatomic, strong) AVCaptureSession *session;
/**
* 顯示捕獲到的相機(jī)輸出流
*/
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *preLayer;
/**
* 獲取攝像設(shè)備
*/
@property (nonatomic, strong) AVCaptureDevice *device;
/**
* 創(chuàng)建輸入流
*/
@property (nonatomic, strong) AVCaptureDeviceInput *input;
/**
* 創(chuàng)建輸出流
*/
@property (nonatomic, strong) AVCaptureMetadataOutput *output;
@end
@implementation QRCodeScanViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
// 開始掃描二維碼
[self startScan];
// 點(diǎn)擊返回主界面
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(dismissMainView)];
[self.view addGestureRecognizer: tap];
}
- (void) dealloc {
// 視圖消失, 關(guān)閉通道
[self.session stopRunning];
}
- (void) dismissMainView {
[self dismissViewControllerAnimated: YES completion: nil];
}
// 開始掃描二維碼
- (void) startScan {
// 獲取攝像設(shè)備
self.device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];
// 創(chuàng)建輸入流
NSError *error = nil;
self.input = [AVCaptureDeviceInput deviceInputWithDevice: self.device error: &error];
if (error) {
NSLog(@"input error: %@", error);
}
// 創(chuàng)建輸出流
self.output = [AVCaptureMetadataOutput new];
// 設(shè)置代理, 在主線程中刷新
[self.output setMetadataObjectsDelegate:self queue: dispatch_get_main_queue()];
// 初始化連接對象
self.session = [AVCaptureSession new];
// 設(shè)置高質(zhì)量采集率
[self.session setSessionPreset: AVCaptureSessionPresetHigh];
// 輸入輸出流加入到會(huì)話中
[self.session addInput: self.input];
[self.session addOutput: self.output];
// 設(shè)置掃描支持的編碼格式
self.output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
// 設(shè)置掃描layer
self.preLayer = [AVCaptureVideoPreviewLayer layerWithSession: self.session];
self.preLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
CGSize windowSize = [UIScreen mainScreen].bounds.size;
self.preLayer.frame = CGRectMake((windowSize.width - 160)/4, windowSize.height/6 - 30, windowSize.width/2 + 80 , windowSize.height/2);
[self.view.layer insertSublayer: self.preLayer atIndex:0];
self.preLayer.cornerRadius = 10;
self.preLayer.borderColor = [UIColor orangeColor].CGColor; ;
self.preLayer.borderWidth = 3;
// 啟動(dòng)管道, 開始捕獲
[self.session startRunning];
}
#pragma mark - AVCaptureMetadataOutputObjectsDelegate
// 掃描二維碼
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {
// 判斷是否存在數(shù)據(jù)
if (metadataObjects.count > 0) {
AVMetadataMachineReadableCodeObject *obj = [metadataObjects lastObject];
// 二維碼掃描信息處理
NSLog(@"obj --%@", obj);
NSLog(@"obj.corners = %@",obj.corners);
NSLog(@"obj.stringValue = %@",obj.stringValue);
NSString *string = [NSString stringWithFormat:@"%@",obj.stringValue];
NSLog(@"掃碼結(jié)果:%@",string);
}
}
iOS 掃描二維碼
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門米罚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钧汹,“玉大人,你說我怎么就攤上這事录择“卫常” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵隘竭,是天一觀的道長塘秦。 經(jīng)常有香客問我,道長动看,這世上最難降的妖魔是什么尊剔? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮菱皆,結(jié)果婚禮上须误,老公的妹妹穿的比我還像新娘。我一直安慰自己仇轻,他們只是感情好京痢,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拯田,像睡著了一般历造。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼姓蜂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了医吊?” 一聲冷哼從身側(cè)響起钱慢,我...
- 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卿堂,沒想到半個(gè)月后束莫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡草描,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年览绿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穗慕。...
- 正文 年R本政府宣布暑脆,位于F島的核電站星压,受9級(jí)特大地震影響康谆,放射性物質(zhì)發(fā)生泄漏椎镣。R本人自食惡果不足惜自点,卻給世界環(huán)境...
- 文/蒙蒙 一呵萨、第九天 我趴在偏房一處隱蔽的房頂上張望箱吕。 院中可真熱鬧脑豹,春花似錦坐慰、人聲如沸僵腺。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽辰如。三九已至普监,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凯正。 一陣腳步聲響...
- 正文 我出身青樓桑滩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親允睹。 傳聞我的和親對象是個(gè)殘疾皇子运准,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- //首先介紹怎么生成二維碼 1,引入系統(tǒng)的頭文件 2, 代碼量很小 敲一遍也無妨 每段代碼的注釋都有 3,ok 這...
- 自iOS7以后,iOS掃描二維碼就并不需要借助第三方的框架缭受,這次項(xiàng)目的需求胁澳,自己實(shí)現(xiàn)一個(gè)掃描的功能,蘋果在AVFo...
- 1.代碼如下: #import "ViewController.h" #import @interface Vie...
- //聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄 一米者、用 ZBarSDK 做掃描二維碼 導(dǎo)入的庫文件...
- 文|年小暖 這個(gè)世界有沒有這種人塘雳,在很多人面前表現(xiàn)的無所畏懼陆盘,在很多人面前強(qiáng)大的好像沒有什么軟肋,卻在一個(gè)人面前溫...