我正在使用ARSCNView
来显示使用3D SceneKit
内容增强相机视图的增强体验。
ARSession共享对象,但在ARSession
我找不到闪光灯的任何选项。
有没有办法打开/关闭相机闪光灯?
如何使用ARKit
管理相机?
如何正面和背面改变相机位置?
答案 0 :(得分:7)
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:false)的toggleTorch(on:true)
参考:使用Swift进行黑客攻击
答案 1 :(得分:2)
另一个答案涵盖火炬,以及你的相机位置问题......
无法为ARKit选择相机;也就是说,ARKit会为你选择相机。
答案 2 :(得分:1)
如果割炬在打开后立即被操作系统关闭,您需要做的是;开始ARKit会话后不要立即打开割炬。一段时间后,您应该打开割炬。我在viewDidLoad()中启动了AR会话,并尝试在viewDidAppear()中打开了割炬,但操作系统随后立即将其关闭。因此,我能够使它像这样工作;
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
self?.toggleFlash()
}
}