zoukankan      html  css  js  c++  java
  • iOS

    • 导入框架 #import <AVFoundation/AVFoundation.h>
    • 设置属性: ViewController
    @interface ViewController ()
    
    /// 获取设备
    @property (nonatomic, strong) AVCaptureDevice *device;
    /// 手电筒是否开启
    @property (nonatomic,assign) BOOL lightOn;
    
    @end
    
    • 获取硬件以及判断手电筒是否可用:
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        /**
         *  hasTorch :返回YES表名手机上有手电筒
         */
        if (![_device hasTorch]) {
            NSLog(@"手电筒坏了,赶紧换一个iPhone8吧!!!");
            return;
        }
        
    }
    
    
    • 设置开关手电筒的一个方法:clickBtn2:
    - (IBAction)clickBtn2:(id)sender {
        
        _lightOn = !_lightOn;
        //根据ligthOn状态判断打开还是关闭
        // torchLevel
        if (_lightOn) {
            //开启手电筒
            [_device lockForConfiguration:nil];
            [_device setTorchMode:AVCaptureTorchModeOn];
            
            // 设置手电筒torchLevel(亮度)数值必须在0~1之间,如果设备过热可能会抛出异常并且不能启动
            // 范围 0 - 1 不能是0,应该是(0,1] 左开右闭区间取值,设置数值以前先lock(lockForConfiguration), 设置完毕后一定unlock(unlockForConfiguration)否则崩溃,解决机子过热或者设置导致的崩溃最好的设置方式@try...@catch...@finally捕获异常防止崩溃
            [_device setTorchModeOnWithLevel:0.01 error:nil];
            [_device unlockForConfiguration];
            
        }else{
            //关闭手电筒
            [_device lockForConfiguration:nil];
            [_device setTorchMode:AVCaptureTorchModeOff];
            [_device unlockForConfiguration];
            
        }
    }
    
    • 设置手电筒亮度的一个方法: clickBtn1
    /// 设置亮度
    - (IBAction)clickBtn1:(id)sender {
        [_device lockForConfiguration:nil];
        [_device setTorchModeOnWithLevel:1 error:nil];
        [_device unlockForConfiguration];
    }
    

    注意:
    1. 可能由于玩游戏之类原因手机过热导致打开手电筒失败,最终导致崩溃.
    2. 设置手电筒的亮度前要 lockForConfiguration
    3. 设置手电筒完毕后要 unlockForConfiguration
    4. 最好的办法用@try...@catch...@finally捕获异常防止崩溃.

  • 相关阅读:
    Oracle数据库安装
    [转]卡西欧手表调日期正确方法
    python密码处理(可用于生产模式)
    [转]python对json的相关操作
    [转]Python中的with…as…
    Python标准库--os模块
    我的github代码添加
    Python正则表达式+自创口诀
    自己总结python用xlrdxlwt读写excel
    CentOS安装+配置+远程
  • 原文地址:https://www.cnblogs.com/adampei-bobo/p/7444237.html
Copyright © 2011-2022 走看看