【发布时间】:2011-01-06 22:21:54
【问题描述】:
我正在编写一个相机应用程序,无论环境光如何,它都需要相同的曝光。不幸的是, setExposureCompensation() 只起到偏移的作用。我可以关闭这个自动调整,还是这更像是用户前的硬件修正?
【问题讨论】:
-
这么老了,你可能已经超越了这个,但我已经更新了下面的答案,以引用用于曝光锁定的新 4.0+ API。
我正在编写一个相机应用程序,无论环境光如何,它都需要相同的曝光。不幸的是, setExposureCompensation() 只起到偏移的作用。我可以关闭这个自动调整,还是这更像是用户前的硬件修正?
【问题讨论】:
编辑:因此,对于 Android 4.0 及更高版本,有一个 setAutoExposureLock(boolean) 应该可以满足您的需要。它不会让你自己设置曝光,但在确定曝光后,你可以将其锁定为当前曝光。不过,您需要检查 isAutoExposureLockSupported() 来保护它,以确保设备支持该功能。
要每次都获得相同的实际曝光,您需要能够设置固定的 ISO、快门速度和光圈。正如您所说,曝光补偿仅从相机自动确定的测光曝光偏移。据我所知,Android 中没有设置 ISO、快门速度或光圈值的内置方法。
【讨论】:
您应该浏览所有相机参数,看看是否有任何与 ISO、快门速度和光圈相关的参数。
例子:
Camera.Parameters params = mCamera.getParameters();
String sParams = params.flatten();
Log.d("TAG", "camera flatten: "+sParams);
【讨论】: