当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS实现屏幕亮度和闪光灯控制的实例代码

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

太平道教谁创立,葫芦岛电影院,九道湾大峡谷

这两天学习了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];  
  }
}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网