【问题标题】:iOS 10.2 - Activate Retina Flash instead of Back LED with TorchiOS 10.2 - 使用 Torch 激活 Retina Flash 而不是 Back LED
【发布时间】:2017-01-22 16:54:15
【问题描述】:

有没有办法向设备指定当设置setTorchModeOnWithLevel 时,他们将激活 Retina Flash(iPhone6s/7 的前置闪光灯)而不是背面的 True-Tone 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();

iOS 中是否存在用于访问 Retina Flash 的 API?

【问题讨论】:

  • 你的采集设备是前置摄像头吗? (AVCaptureDevicePosition.front)
  • @Emptyless:是的,我使用的是构造函数,我在其中传递“位置:.front”(使用构造函数更新问题)。关于为什么它可能没有显示的任何想法?谢谢。
  • AVCaptureDevice 也有很多flash 的属性(与torch 分开)。你试过那些吗?更多信息:developer.apple.com/reference/avfoundation/avcapturedevice/…
  • @DaveWeston Flash 属性似乎已被弃用,还有其他建议吗?
  • 从 iOS 10 开始,flash 设置似乎已移至AVCapturePhotoSettings。此类的参考是:developer.apple.com/reference/avfoundation/…

标签: ios swift avfoundation retina


【解决方案1】:

AFAIK iOS 没有有任何特定于 Retina Flash 的 API。 (截至日期为 iOS 10.2)

来自苹果开发者thread

Retina Flash iPhone 6s 和 6s Plus 包含一个定制显示芯片, 允许视网膜显示屏短暂闪烁 3 倍于其亮度 通常的最大照度。没有添加新的 API 来支持这一点 特征。从 iOS 4 开始,AVCaptureDevice 已经支持-hasFlash-isFlashModeSupported:-flashMode 属性。 iPhone 6s 和 6s Plus 前置摄像头是第一个前置 iOS 摄像头对-hasFlash 属性响应“是”。通过设置 前置摄像头的 flashMode 为 AVCaptureFlashModeOnAVCaptureFlashModeAuto,静止图像时视网膜闪光 捕获(见AVCaptureStillImageOutput’s captureStillImageAsynchronouslyFromConnection:completionHandler:), 就像 True Tone 闪光灯为后置摄像头拍摄照片一样。

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

【讨论】:

  • 有什么方法可以在不拍照的情况下执行 Retina Flash,或者这是必需的吗?
  • @JakeChasan 我们无法在不拍照的情况下触发视网膜闪光。我也一直在努力做到这一点。但从苹果文档中没有选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多