【问题标题】:iOS 7 AVCaptureTorchModeAuto doesn't seem to activate torch in low lightiOS 7 AVCaptureTorchModeAuto 似乎没有在弱光下激活手电筒
【发布时间】:2014-01-29 22:44:43
【问题描述】:

我已将 AVCaptureDevice TorchMode 设置为 AVCaptureTorchModeAuto,在 AVCaptureSession 开始运行后设置火炬模式。根据 Apple 的文档,我希望手电筒模式能够在弱光条件下点亮 LED:https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html#//apple_ref/doc/c_ref/AVCaptureTorchMode

但是,在我的测试设备(iPhone 4S、iPhone 5)上,手电筒在任何光照条件下都不会打开。有人遇到过这个问题吗?

这是我的代码:

- (void)enableTorchMode
{
    if ((self.device.hasTorch) && ([self.device isTorchModeSupported:AVCaptureTorchModeAuto]))
    {
        [self.device lockForConfiguration:nil];
        self.device.torchMode = AVCaptureTorchModeAuto;
        [self.device unlockForConfiguration];
    }
}

【问题讨论】:

    标签: ios objective-c avfoundation


    【解决方案1】:

    你没有提到你在用相机做什么,但目前(从 iOS 7.1 开始),除非AVCaptureSession 有视频输出,否则自动手电筒模式不起作用。当唯一的其他选项是照片或音频时,这是有道理的,但如果您只对面部或条形码等元数据感兴趣,那就有问题了。

    您可以在设置会话时使用类似的东西来强制它工作:

    if ([captureDevice isTorchModeSupported:AVCaptureTorchModeAuto]) {
        AVCaptureOutput *videoOutput = [[AVCaptureVideoDataOutput alloc] init];
        [session addOutput:videoOutput];
    }
    

    如果这是您遇到的问题,我建议您使用filing a bug reportFeel free to dupe mine.

    【讨论】:

    • 与文档中所述的不同,即使有视频输出,光采样也仅在会话开始时进行,而不是连续进行(如文档所述)。见here
    • 感谢您的回答,手电筒现在正在工作(是的,虽然它仅在第一次初始化时捕获打开/关闭手电筒,但至少它可以工作)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多