我们的iOS应用程序具有条形码扫描功能,我们可以让客户根据需要打开和关闭手电筒.在AvcaptureSession运行且手电筒启用时,在iPhone X上(仅在iPhone X上),屏幕上的视频捕获会冻结.只要再次关闭手电筒,视频捕捉就会再次开始.有没有人碰到这个?我似乎无法找到任何指向解决方案的东西.想知道这是否是iPhone X的错误? 最佳答案 我遇到了这个问题.经过一些实验,结果表明获得配置火炬的设备必须以与配置AVCaptureSession时获得设备完全相同的方式完成.例如.:
let captureSession = AVCaptureSession()
let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)
guard let captureDevice = deviceDiscoverySession.devices.first else {
print("Couldn't get a camera")
return
}
do {
let input = try AVCaptureDeviceInput(device: captureDevice)
captureSession!.addInput(input)
} catch {
print(error)
return
}
打开和关闭割炬(手电筒)时,使用该精确方法获取设备.在这种情况下,行:
let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)
guard let device = deviceDiscoverySession.devices.first
例:
func toggleTorch() {
let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)
guard let device = deviceDiscoverySession.devices.first
else {return}
if device.hasTorch {
do {
try device.lockForConfiguration()
let on = device.isTorchActive
if on != true && device.isTorchModeSupported(.on) {
try device.setTorchModeOn(level: 1.0)
} else if device.isTorchModeSupported(.off){
device.torchMode = .off
} else {
print("Torch mode is not supported")
}
device.unlockForConfiguration()
} catch {
print("Torch could not be used")
}
} else {
print("Torch is not available")
}
}
我意识到toggleTorch函数中的某些代码可能是多余的,但我要离开它了.希望这可以帮助.