2017-01-22 128 views
2

有没有一种方法可以指定设备当有人设置setTorchModeOnWithLevel时,他们将激活视网膜闪光灯(iPhone6s/7的正面闪光灯)而不是背面True-音LED闪光灯?iOS 10.2 - 使用手电筒激活视网膜闪光灯而不是背光LED

以下标准的代码似乎只能激活后LED:

AVCaptureDevice.defaultDevice(withDeviceType: AVCaptureDeviceType.builtInDualCamera, 
    mediaType: AVMediaTypeVideo, position: .front) 
try device.lockForConfiguration(); 
let torchOn = !device.isTorchActive; 
try device.setTorchModeOnWithLevel(1.0); 
device.unlockForConfiguration(); 

是否在API中的iOS存在一个能够访问到视网膜的Flash?

+0

您的捕捉设备是前置摄像头吗? (AVCaptureDevicePosition.front) – Emptyless

+0

@Emptyless:是的,我使用的构造函数,我通过“位置:.front”(更新问题的构造函数)。任何想法为什么它可能不会显示?谢谢。 –

+0

'AVCaptureDevice'也有一堆'flash'属性(与'torch'分开)。你尝试过那些吗?更多信息:https://developer.apple.com/reference/avfoundation/avcapturedevice/1388116-flashmode –

回答

4

AFAIK iOS 请勿有任何特定于Retina Flash的API。 (如过时的iOS 10.2)

从苹果开发者thread

视网膜闪存iPhone 6S和6S加上包含自定义显示芯片, 使视网膜显示屏短暂地闪烁比 亮3倍通常的最大照度。没有新的API被添加来支持这个 功能。自iOS 4以来,AVCaptureDevice已支持-hasFlash, -isFlashModeSupported:-flashMode属性。 iPhone 6s 和6s Plus前置摄像头是第一款面向-hasFlash属性的前置摄像头。由 前置摄像头的flashMode设置为AVCaptureFlashModeOnAVCaptureFlashModeAuto,视网膜闪光灯闪光时的静止图像是 捕获(见AVCaptureStillImageOutput’s captureStillImageAsynchronouslyFromConnection:completionHandler:) 就像真音闪光灯为后置摄像头剧照。

因此,要使您的代码正常工作,请检查-hasFlash,然后将Flash模式设置为自动或开启。

+0

有没有办法在没有拍照的情况下进行视网膜闪光,或者这是必要的? –

+0

@JakeChasan我们无法在不拍照的情况下触发视网膜闪光。我一直在试图弄清楚这一点。但从苹果文档没有选择。 – Bluewings