iOSQRCode(二維碼)
實現思路
- 輸入裝置(用來獲取外界資訊) 攝像頭, 麥克風, 鍵盤
- 輸出裝置 (將收集到的資訊, 做解析, 來獲取收到的內容)
- 會話session (用來連線輸入和輸出裝置)
- 特殊的layer (展示輸入裝置所採集的資訊)
1. 導包
#import <AVFoundation/AVFoundation.h>
2. 程式碼
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>
//1. 輸入裝置(用來獲取外界資訊) 攝像頭, 麥克風, 鍵盤
@property (nonatomic, strong) AVCaptureDeviceInput *input;
//2. 輸出裝置 (將收集到的資訊, 做解析, 來獲取收到的內容)
@property (nonatomic, strong) AVCaptureMetadataOutput *output;
//3. 會話session (用來連線輸入和輸出裝置)
@property (nonatomic, strong) AVCaptureSession *session;
//4. 特殊的layer (展示輸入裝置所採集的資訊)
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *previewLayer;
@end
@implementation ViewController
#pragma mark 點選螢幕開始掃描
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//1.輸入裝置(用來獲取外界資訊) 攝像頭, 麥克風, 鍵盤
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
self.input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
//2.輸出裝置 (將收集到的資訊, 做解析, 來獲取收到的內容)
self.output = [AVCaptureMetadataOutput new];
//3.會話session (用來連線輸入和輸出裝置)
self.session = [AVCaptureSession new];
// 會話掃描展示的大小
[self.session setSessionPreset:AVCaptureSessionPresetHigh];
// 會話跟輸入和輸出裝置關聯
if ([self.session canAddInput:self.input]) {
[self.session addInput:self.input];
}
if ([self.session canAddOutput:self.output]) {
[self.session addOutput:self.output];
}
//下面兩句程式碼應該寫在此處
//制定輸出裝置的代理, 用來接受返回的資料
[self.output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
//設定後設資料型別 二維碼QRCode
[self.output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
//4.特殊的layer (展示輸入裝置所採集的資訊)
self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];
// 大小layer的大小
self.previewLayer.frame = self.view.bounds;
[self.view.layer addSublayer:self.previewLayer];
//5. 啟動會話
[self.session startRunning];
}
/**
captureOutput : 輸出裝置
metadataObjects : 後設資料物件的陣列
connection : 連線
*/
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
//1. 停止會話
[self.session stopRunning];
//2. 刪除layer
[self.previewLayer removeFromSuperlayer];
//3. 遍歷資料獲取內容
for (AVMetadataMachineReadableCodeObject *obj in metadataObjects) {
NSLog(@"obj: %@",obj.stringValue);
}
}
@end
相關文章
- 二維碼管理平臺 生成二維碼
- Flutter - 生成二維碼與識別二維碼Flutter
- 直播系統搭建,java二維碼 生成二維碼Java
- iOS 花式二維碼生成和二維碼識別iOS
- Android 二維碼掃描和生成二維碼Android
- 二維碼解析
- 微信小程式:小程式碼、小程式二維碼、普通二維碼微信小程式
- QR Code二維碼
- 二維碼知識
- jquery生成二維碼jQuery
- 二維碼線上生成
- 從普通二維碼到檔案生成二維碼的轉變
- Java 驗證碼、二維碼Java
- Android 二維碼相關(二)Android
- Tp框架 生成二維碼框架
- 掃二維碼連wifiWiFi
- ios--二維碼生成iOS
- 二維碼生成工具類
- 二維碼解析器
- 二維碼生成-PythonPython
- c++生成二維碼C++
- JS線上生成二維碼JS
- 關於 二維碼 解析
- 二維碼線上生成工具
- iOS二維碼掃描iOS
- 自己搭建二維碼介面
- iOS 生成二維碼/條形碼iOS
- PHP、Python、JavaScript 識別二維碼和生成二維碼解決方案PHPPythonJavaScript
- Compete:二維碼生成網站流量走低,二維碼營銷遇到困局網站
- 易易二維碼,多功能線上檔案預覽與二維碼生成器
- iOS 掃描二維碼/條形碼iOS
- 實現彩色二維碼程式碼實
- 線上生成二維碼程式碼例項
- Tp生成小程式二維碼
- php生成二維碼圖片PHP
- PHP生成簡單二維碼PHP
- QiShare團隊二維碼
- 二維碼相關工具類