iOS实现屏幕亮度和闪光灯控制的实例代码

发布时间 - 2026-01-11 01:37:56    点击率:

这两天学习了iOS屏幕亮度和闪光灯控制,所以,今天添加一点小笔记。

所用涉及框架:AVFoundation框架和ImageIO

读取屏幕亮度:[UIScreen mainScreen].brightness;

设置屏幕亮度:[[UIScreen mainScreen] setBrightness:0.5];

获取环境亮度主要代码:

- (void)getTorch {
  AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
  AVCaptureDeviceInput *input = [[AVCaptureDeviceInput alloc]initWithDevice:device error:nil];
  AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
  [output setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
  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];
  }
  [self.session startRunning];

}

- (void)captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection {
  CFDictionaryRef metadataDict =CMCopyDictionaryOfAttachments(NULL,sampleBuffer, 
  kCMAttachmentMode_ShouldPropagate);
  NSDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:
  (__bridgeNSDictionary*)metadataDict];

  CFRelease(metadataDict);
  NSDictionary *exifMetadata = [[metadata objectForKey:(NSString*)kCGImagePropertyExifDictionary] mutableCopy];
  float brightnessValue = [[exifMetadata objectForKey:(NSString*)kCGImagePropertyExifBrightnessValue] floatValue];
  NSLog(@"%f",brightnessValue);
  // 根据brightnessValue的值来打开和关闭闪光灯
  AVCaptureDevice*device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
  BOOL result = [device hasTorch];// 判断设备是否有闪光灯
  if((brightnessValue <0) && result) {
  // 打开闪光灯
    [device lockForConfiguration:nil];
    [device setTorchMode:AVCaptureTorchModeOn];//开
    [device unlockForConfiguration];
  }else if((brightnessValue >0) && result) {
  // 关闭闪光灯
    [device lockForConfiguration:nil];    
    [device setTorchMode:AVCaptureTorchModeOff];//关
    [device unlockForConfiguration];  
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # 屏幕亮度  # 闪光灯亮度  # 控制屏幕亮度  # iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)  # IOS 仿支付宝支付屏幕亮度变化机制  # iOS中屏幕亮度与闪光灯控制详解  # iOS实现控制屏幕常亮不变暗的方法示例  # 这两天  # 大家多多  # nil  # error  # AVCaptureVideoDataOutput  # init  # output  # AVCaptureDeviceInput  # AVMediaTypeVideo  # input  # initWithDevice  # alloc  # AVCaptureSessionPresetHigh  # setSessionPreset  # canAddInput  # canAddOutput  # addInput  # queue  # setSampleBufferDelegate  # dispatch_get_main_queue 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python文件流缓冲机制_IO性能解析【教程】  深圳网站制作的公司有哪些,dido官方网站?  5种Android数据存储方式汇总  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel怎么使用Intervention Image库处理图片上传和缩放  html如何与html链接_实现多个HTML页面互相链接【互相】  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何在建站之星网店版论坛获取技术支持?  python中快速进行多个字符替换的方法小结  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  如何快速搭建高效服务器建站系统?  如何在新浪SAE免费搭建个人博客?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  网站图片在线制作软件,怎么在图片上做链接?  郑州企业网站制作公司,郑州招聘网站有哪些?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何快速搭建安全的FTP站点?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何在阿里云高效完成企业建站全流程?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Python面向对象测试方法_mock解析【教程】  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  网站制作企业,网站的banner和导航栏是指什么?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何快速查询域名建站关键信息?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel如何实现多对多模型关联?(Eloquent教程)  使用Dockerfile构建java web环境  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Python进程池调度策略_任务分发说明【指导】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何在万网主机上快速搭建网站?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  西安专业网站制作公司有哪些,陕西省建行官方网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  ,怎么在广州志愿者网站注册?  魔方云NAT建站如何实现端口转发?  如何在Windows 2008云服务器安全搭建网站?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏