iOS自动打开闪光灯
现在好多应有都具备扫码功能,为了减少用户操作,一般会在光线比较暗的时候,自动打开闪光灯:
1、导入头文件
#import <AVFoundation/AVFoundation.h> #import <ImageIO/ImageIO.h>
2、创建设备、输入输出流
// 1.获取硬件设备AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];// 2.创建输入流AVCaptureDeviceInput *input = [[AVCaptureDeviceInput alloc]initWithDevice:device error:nil];// 3.创建设备输出流AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];[output setSampleBufferDelegate:self queue:dispatch_get_main_queue()];// AVCaptureSession属性self.session = [[AVCaptureSession alloc]init];// 设置为高质量采集率 [self.session setSessionPreset:AVCaptureSessionPresetHigh];// 添加会话输入和输出if ([self.session canAddInput:input]) {[self.session addInput:input];}if ([self.session canAddOutput:output]) {[self.session addOutput:output];}// 9.启动会话[self.session startRunning];
3、实现代理方法
#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL,sampleBuffer, kCMAttachmentMode_ShouldPropagate);NSDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:(__bridge NSDictionary*)metadataDict];CFRelease(metadataDict);NSDictionary *exifMetadata = [[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];float brightnessValue = [[exifMetadata objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue];// brightnessValue 值代表光线强度,值越小代表光线越暗if (brightnessValue <= -2 && !_isAutoOpen) {_isAutoOpen = YES;[self.torchBtn setSelected:YES];[self turnTorchOn:YES];} }
4、开启关闭闪光灯
// 打开/关闭手电筒 - (void)turnTorchOn:(BOOL)on{if ([self.device hasTorch] && [self.device hasFlash]){[self.device lockForConfiguration:nil];if (on) {[self.device setTorchMode:AVCaptureTorchModeOn];[self.device setFlashMode:AVCaptureFlashModeOn];} else {[self.device setTorchMode:AVCaptureTorchModeOff];[self.device setFlashMode:AVCaptureFlashModeOff];}[self.device unlockForConfiguration];} else {[SSAlertView showWithTitle:@"提示" message:@"当前设备没有闪光灯,不能提供手电筒功能" commitTitle:@"我知道了" cancelTitle:nil commitAction:nil cancelBlock:nil];} }
转自:http://www.cenzhijun.top/2017/07/自动打开闪光灯/
转载于:https://www.cnblogs.com/xuzb/p/8658261.html
iOS自动打开闪光灯相关推荐
- iOS扫码识别【自动拉近放大】(扫描较小二维码地过程中拉近放大图片)【光线暗的时候,能够自动打开闪光灯】
文章目录 前言 I.搭建一个统一识别二维码的控制器 II.工具方法 QRCodeUtil see also AVMetadataObjectType 前言 先回顾下AVFoundation的扫码原理图 ...
- IOS开发调用系统相机和打开闪光灯
IOS开发调用系统相机和打开闪光灯 今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...
- 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
通过链接打开对话框: 打开qq聊天窗口的方法 <a href="http://wpa.qq.com/msgrd?v=3&uin=1450612626&site=qq&a ...
- iOS 扫描二维码自动打开灯 检测环境光线强度
扫描二维码自动打开灯 检测环境光线强度,做的不太好,打开灯了没有关闭,后期优化可以打开关闭的代码,并且加一个定时器时间间隔(例如10秒左右)来控制是否改变灯的状态,否则灯会随着光线闪来闪去的.最简单 ...
- iOS自动签名打包(xcodebuild)----常用
iOS自动打包主要用xcodebuild命令, 在终端输入xcodebuild --help可以查看xcodebuild的参数. xcodebuild具体语法: 无workspace的工程 xcode ...
- Tomcat Jenkins iOS自动打包
Tomcat Jenkins iOS自动打包 Jenkins 可以配合测试人员或者 CI 打包,主要作用是提供打包页面选择和参数传递,最后导出 ipa 包. 打包方式有如下几种 借助 Jenkins ...
- python项目打包部署到ios_Python iOS 自动打包脚本(包含上传到fir)
Python iOS自动打包脚本 使用说明 1.1 使用python3编写,没有python3 环境的需要下载python3 python官网下载 1.2 通过Homebrew安装Python3 1. ...
- ios 自动打包命令_通过命令行xcodebuild编译打包iOS应用
点击上方"软件测试精品"关注我们 为什么要自动化打包? iOS编译打包需要签名,测试包又需要连接不同后台服务器,开发人员就需要不断地打开Xcode编译打包成ipa,然后上传到ftp ...
- ios怎么打开c语言文件操作函数,C++ ofstream和ifstream详细用法以及C语言的file用法...
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个"流"类为基础的,包括我们 ...
- iOS自动打包(敲一下enter键,完成iOS的打包工作)
原文地址这里写链接内容 参考iOS自动打包并发布脚本这里写链接内容 作为开发人员,免不了要为测试人员打包,让其测试.而打包这个行为是非常无聊的,特别是在每个新版本上线前一两天,总会出现一些莫名其妙的b ...
最新文章
- 离职交接文档_如何写好离职工作交接文档?
- pandas 绘图 机器学习看特征相关性
- 修改AspNetSqlMembershipProvider的密码规则
- Java8 中用法优雅的 Stream,性能也优雅吗?
- java 静态代码块
- JavaScript中BOM操作
- 多播报文的发送和接收
- 火狐浏览器安装插件步骤
- OpenKG开源系列|首个多模态开放知识图谱OpenRichpedia (东南大学)
- 多个正则引擎的比较(pcre re2 hyperscan)
- easyUI 上传文件
- 小米手机Root 刷机
- Exch:POP3 和 IMAP4 操作指南
- 云计算——交换机基本原理与配置
- QT构建编译出现错误error: undefined reference to 的解决办法
- java license 验证方案_truelicense实现JAVA的license机制(包括license生成和验证)
- oracle中的双精度浮点,双精度扩展格式 (x86)
- 将一个数组按照从小到大的顺序排列
- geogebra动态数学软件,实用工具
- 基于JSP校园二手交易系统的设计与实现