如何使用 ARKit 打开 on/offf 相机闪光灯?
How to turn on/offf camera flash light with ARKit?
我正在使用 ARSCNView
来显示 AR 体验,它使用 3D SceneKit
内容增强相机视图。
ARSession 管理设备摄像头的共享对象,但在 ARSession
中我找不到闪光灯的任何选项。
有什么方法可以打开on/off相机闪光灯吗?
如何使用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)
ref:使用 Swift
进行黑客攻击
另一个答案涉及手电筒,所以你的相机位置问题...
无法 select ARKit 相机;也就是说,ARKit select 是您的相机。
- 当您使用世界跟踪时,ARKit 总是 select 背面的广角摄像头(不是如此配备的设备上的长焦或双摄像头)。
- 当您使用面部跟踪时(iPhone 仅限 X),ARKit 始终使用前置 TrueDepth 摄像头。
如果您的手电筒在您打开后立即被 OS 关闭,您需要做的是;不要在启动 ARKit 会话后立即打开手电筒。一段时间后你应该打开手电筒。我在 viewDidLoad() 中启动 AR 会话,并尝试在 viewDidAppear() 中打开手电筒,但 OS 之后立即将其关闭。所以,我能够让它像这样工作;
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
self?.toggleFlash()
}
}
我正在使用 ARSCNView
来显示 AR 体验,它使用 3D SceneKit
内容增强相机视图。
ARSession 管理设备摄像头的共享对象,但在 ARSession
中我找不到闪光灯的任何选项。
有什么方法可以打开on/off相机闪光灯吗?
如何使用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)
ref:使用 Swift
进行黑客攻击另一个答案涉及手电筒,所以你的相机位置问题...
无法 select ARKit 相机;也就是说,ARKit select 是您的相机。
- 当您使用世界跟踪时,ARKit 总是 select 背面的广角摄像头(不是如此配备的设备上的长焦或双摄像头)。
- 当您使用面部跟踪时(iPhone 仅限 X),ARKit 始终使用前置 TrueDepth 摄像头。
如果您的手电筒在您打开后立即被 OS 关闭,您需要做的是;不要在启动 ARKit 会话后立即打开手电筒。一段时间后你应该打开手电筒。我在 viewDidLoad() 中启动 AR 会话,并尝试在 viewDidAppear() 中打开手电筒,但 OS 之后立即将其关闭。所以,我能够让它像这样工作;
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
self?.toggleFlash()
}
}