【问题标题】:Turn on light/torch with front camera用前置摄像头打开灯/手电筒
【发布时间】:2017-06-08 08:36:36
【问题描述】:

我知道如何打开/关闭后置摄像头的闪光灯。我知道如何切换前置/后置摄像头。但我不知道如何独立于活动相机打开/关闭闪光灯。

我的意思是:如果活动摄像头是前置摄像头,当我打开闪光灯时,它会冻结。当我关闭它时,它会解冻。

到目前为止我的代码:

var back_cam:AVCaptureDevice?
for device in devices{
    if (device as AnyObject).hasMediaType(AVMediaTypeVideo) && (device as AnyObject).position == .back{
        back_cam=device as? AVCaptureDevice
    }
}

guard let cam=back_cam else {
    print("no back cam?")
    return
}

if cam.hasTorch{
    do{
        try cam.lockForConfiguration()
            if cam.torchMode == .on{
                cam.torchMode = .off
            }else{
                do{
                    try cam.setTorchModeOnWithLevel(1)
                }catch{
                    print(error)
                }
            }
            cam.unlockForConfiguration()
        }catch{
            print(error)
        }
    }
}

编辑

如果我不清楚,我想保持灯亮,无论活动摄像头是后置摄像头还是前置摄像头。

【问题讨论】:

    标签: ios swift camera avcapturesession avcapturedevice


    【解决方案1】:

    在打开/关闭之前,您需要检查设备是否支持手电筒模式。

    根据 Apple documentation

    var torchMode: AVCaptureTorchMode { get set }
    

    在设置此属性的值之前,调用 isTorchModeSupported(_:) 方法来确保设备支持 所需的模式。将设备设置为不支持的手电筒模式结果 在引发异常时。

    此外,当您切换到前置摄像头时,默认行为是手电筒模式关闭。将其与 iPhone/iPad 的默认相机应用进行比较。

    【讨论】:

    • “默认行为是关闭手电筒模式”:但我正试图不获得默认行为,我希望灯亮,无论活动摄像头是后置摄像头还是后置摄像头前面一个。
    • 当您更改为前置摄像头时,isTorchModeSupported 返回 false。这意味着在这种情况下我们不能覆盖默认行为
    • 是的,我想这是不可能的......无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2021-05-05
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多