gpt4 book ai didi

ios - 打开手电筒时 AVCaptureSession 卡住

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:04 33 4
gpt4 key购买 nike

我们的 iOS 应用程序中有条形码扫描功能,我们让客户能够根据需要打开和关闭手电筒。在 iPhone X 上(并且仅在 iPhone X 上)当 AvCaptureSession 正在运行并且手电筒已启用时,屏幕上的视频捕获会卡住。一旦手电筒再次关闭,视频捕捉就会再次开始。有人遇到过这个吗?我似乎找不到任何指向解决方法的东西。想知道这是否是 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 函数中的某些代码可能是多余的,但我将保留它。希望这会有所帮助。

关于ios - 打开手电筒时 AVCaptureSession 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297812/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com