【发布时间】:2022-03-01 19:28:39
【问题描述】:
我正在使用 ARSCNView 来显示 AR 体验,这些体验通过 3D SceneKit 内容来增强相机视图。
ARSession 管理设备摄像头的共享对象,但在ARSession 中我找不到任何闪光灯选项。
有没有办法打开/关闭相机闪光灯?
如何使用ARKit管理摄像头?
如何改变前后摄像头位置?
【问题讨论】:
我正在使用 ARSCNView 来显示 AR 体验,这些体验通过 3D SceneKit 内容来增强相机视图。
ARSession 管理设备摄像头的共享对象,但在ARSession 中我找不到任何闪光灯选项。
有没有办法打开/关闭相机闪光灯?
如何使用ARKit管理摄像头?
如何改变前后摄像头位置?
【问题讨论】:
func toggleTorch(on: Bool) {
guard let device = AVCaptureDevice.default(for: AVMediaType.video)
else {return}
if device.hasTorch {
do {
try device.lockForConfiguration()
if on == true {
device.torchMode = .on // set on
} else {
device.torchMode = .off // set off
}
device.unlockForConfiguration()
} catch {
print("Torch could not be used")
}
} else {
print("Torch is not available")
}
}
称之为
toggleTorch(on: true) 的toggleTorch(on: false)
参考:使用 Swift 进行黑客攻击
【讨论】:
ARKit中更改相机位置吗?
on 指的是什么?
另一个答案包括手电筒,所以你的相机位置问题......
无法为 ARKit 选择相机;也就是说,ARKit 会为你选择相机。
【讨论】:
如果您的手电筒在您打开后立即被操作系统关闭,您需要做的是;不要在启动 ARKit 会话后立即打开手电筒。你应该在一段时间后打开手电筒。我在 viewDidLoad() 中启动 AR 会话并尝试在 viewDidAppear() 中打开手电筒,但操作系统随后立即关闭它。所以,我能够让它像这样工作;
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
self?.toggleFlash()
}
}
【讨论】: