iOS 掃一掃 弱光檢測

如題,處理后攝像頭的光感值装黑,確定手電筒顯示與隱藏

  • 遵循協(xié)議
協(xié)議:AVCaptureVideoDataOutputSampleBufferDelegate
  • 添加監(jiān)聽
 // 弱光識別監(jiān)聽
AVCaptureVideoDataOutput *buffer = [[AVCaptureVideoDataOutput alloc] init];
[buffer setSampleBufferDelegate:self queue:dispatch_get_main_queue()];

if ([self.session canAddOutput:buffer]) [self.session addOutput:buffer];
  • AVCaptureVideoDataOutputSampleBufferDelegate 代理
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    
    static BOOL isStop = false;
    if (isStop) return;
    
    isStop = true;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        
        isStop = false;
    });
    
    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];
    
    UIButton *lightBtn = [self.view viewWithTag:111111];
    if (brightnessValue < 0 && !lightBtn.selected && lightBtn.isHidden) {
        
        [lightBtn.layer removeAllAnimations];
        lightBtn.hidden = false;
        [lightBtn alphaOrOpacityAnimation]; // 心跳動畫
    }
    
    if (brightnessValue > 0 && !lightBtn.selected && !lightBtn.isHidden) {
        
        [lightBtn.layer removeAllAnimations];
        lightBtn.hidden = true;
    }
}
  • 心跳動畫:UIView的Animation類目
// 呼吸燈動畫
- (void)alphaOrOpacityAnimation {
    
    CABasicAnimation *animation =[CABasicAnimation animationWithKeyPath:@"opacity"];
    animation.fromValue = [NSNumber numberWithFloat:1.0f];
    animation.toValue = [NSNumber numberWithFloat:0.1f];  // 透明度肋僧。
    animation.autoreverses = YES;
    animation.duration = 0.75;
    animation.repeatCount = 2;
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;  //removedOnCompletion,fillMode配合使用保持動畫完成效果
    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    
    [self.layer addAnimation:animation forKey:nil];
}
  • 附上手電筒開關(guān)方法代碼
//照明按鈕點(diǎn)擊事件
- (void)lightBtnOnClick:(UIButton *)btn
{
    [btn.layer removeAllAnimations];
    
    // ppExt:不能使用_device:無相機(jī)權(quán)限不能打開
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    //判斷是否有閃光燈
    if (![device hasTorch]) {
        
        [self skipToApplicationSettingWith:Error_Torch_Failure IsToSetting:false CancelHanlder:nil];
        return;
    }
    
    btn.selected = !btn.selected;
    
    [device lockForConfiguration:nil];
    if (btn.selected) {
        
        [device setTorchMode:AVCaptureTorchModeOn];
    }else
    {
        [device setTorchMode:AVCaptureTorchModeOff];
    }
    [device unlockForConfiguration];
}

記錄每個值得記錄的點(diǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眨唬,一起剝皮案震驚了整個濱河市绷落,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌称杨,老刑警劉巖肌毅,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姑原,居然都是意外死亡悬而,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門锭汛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笨奠,“玉大人,你說我怎么就攤上這事唤殴“闫牛” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵朵逝,是天一觀的道長蔚袍。 經(jīng)常有香客問我,道長配名,這世上最難降的妖魔是什么啤咽? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮渠脉,結(jié)果婚禮上宇整,老公的妹妹穿的比我還像新娘。我一直安慰自己芋膘,他們只是感情好没陡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布涩哟。 她就那樣靜靜地躺著,像睡著了一般盼玄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潜腻,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天埃儿,我揣著相機(jī)與錄音,去河邊找鬼融涣。 笑死童番,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的威鹿。 我是一名探鬼主播剃斧,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忽你!你這毒婦竟也來了幼东?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤科雳,失蹤者是張志新(化名)和其女友劉穎根蟹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糟秘,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡简逮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尿赚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片散庶。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凌净,靈堂內(nèi)的尸體忽然破棺而出悲龟,到底是詐尸還是另有隱情,我是刑警寧澤泻蚊,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布躲舌,位于F島的核電站,受9級特大地震影響性雄,放射性物質(zhì)發(fā)生泄漏没卸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一秒旋、第九天 我趴在偏房一處隱蔽的房頂上張望约计。 院中可真熱鬧,春花似錦迁筛、人聲如沸煤蚌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尉桩。三九已至筒占,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜘犁,已是汗流浹背翰苫。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留这橙,地道東北人奏窑。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像屈扎,于是被迫代替她去往敵國和親埃唯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容

  • github排名https://github.com/trending,github搜索:https://gith...
    小米君的demo閱讀 4,621評論 2 38
  • 一日一簽 世界上最棒的事是鹰晨,每天早上醒來又是嶄新的一天墨叛,完全免費(fèi),永不斷貨并村。 疼痛的日子巍实,總是希望身體的健康。也總...
    愛畫的飯飯閱讀 149評論 0 3
  • 每晚睡前丸边,我都會習(xí)慣性地刷一遍朋友圈,默默圍觀親戚妯娌和七姑八姨們輪番轉(zhuǎn)發(fā)的養(yǎng)生鏈接荚孵、微商小販的廣告宣傳妹窖、電商賣家...
    我從未見過你閱讀 300評論 0 0
  • 萬曇一閱讀 117評論 0 0
  • 篇目:《拆掉思維的墻》第五、六章 文章復(fù)述: 今天看了兩章收叶,第一章的主題是職業(yè)骄呼,作者從職業(yè),找到感興趣的職業(yè)判没、不要...
    情情歌閱讀 167評論 0 0