我正在尝试在 iOS 相机应用程序中启用 AVCaptureDevice 的 automaticEnablesLowLightBoostWhenAvailable,但我完全无法使 AVCaptureDevice 的 isLowLightBoostSupported 返回 true。
问题:除了锁定配置之外,是否需要做任何事情来启用低光增强 api?是否有任何已知原因 isLowLightBoostSupported 在完全更新的现代系统上总是返回 false(对于所有设备)?
我正在使用 iOS 7.1 在 5S 上进行测试。
为了简单起见,我已将更改移植到 Apple 的 AVCam 测试应用程序中。AVCam 中的差异是这样的:
diff --git a/AVCam/AVCam/AVCamViewController.m b/AVCam/AVCam/AVCamViewController.m
index 84a2c77..4e15fc4 100644
--- a/AVCam/AVCam/AVCamViewController.m
+++ b/AVCam/AVCam/AVCamViewController.m
@@ -175,6 +175,18 @@ static void * SessionRunningAndDeviceAuthorizedContext = &SessionRunningAndDevic
[session addOutput:stillImageOutput];
[self setStillImageOutput:stillImageOutput];
}
+
+ if ([videoDevice respondsToSelector:@selector(isLowLightBoostSupported)]) {
+ if ([videoDevice lockForConfiguration:nil]) {
+ if (videoDevice.isLowLightBoostSupported) {
+ videoDevice.automaticallyEnablesLowLightBoostWhenAvailable = YES;
+ NSLog(@"was supported");
+ } else {
+ NSLog(@"was not supported");
+ }
+ [videoDevice unlockForConfiguration];
+ }
+ }
});
}
为了更清楚起见,我已将该代码放在 github 上的 AVCam 在线上下文中。
我浏览了文档和 SO 试图找到答案。以下是一些对我当前代码的教育:
- iPhone 5 的弱光增强模式
- AVCaptureDevice 低光照增强不起作用
- https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html#//apple_ref/occ/instp/AVCaptureDevice/lowLightBoostSupported
我还尝试将 AVCaptureSession 实例的 sessionPreset 设置为所有 AVCaptureSessionPresetHigh、AVCaptureSessionPresetPhoto 和 AVCaptureSessionPresetLow,而对 isLowLightBoostSupported 的状态没有明显影响。
感谢您阅读本文 - 以及您可以提供的任何帮助!:)