android相机获得光传感器值

时间:2012-07-11 09:30:21

标签: android android-camera

我知道如何使用android.hardware.sensor从光传感器获取勒克斯值。

我在市场上看到了light meter tools。应用程序描述说它可以从相机获得勒克斯值。它怎么能这样做?

另外如何设置快门速度和光圈?

3 个答案:

答案 0 :(得分:3)

Android相机API不会为其捕获的图像数据提供任何绝对单位。此外,它不允许手动控制曝光或光圈(尽管基本上所有的手机相机都没有可调节的光圈)。

您可以从JPEG EXIF中找出用于静态捕捉的曝光时间,但这是关于它的。

由于这些限制,您将很难从捕获的相机图像中获得绝对光线测量。您可以校准给定设备以将图像像素值转换为真实光照水平,但由于所有设备都运行自动曝光和自动白平衡,因此它会很复杂。使用Android 4.0中引入的自动曝光和自动白平衡锁会有所帮助,但在勒克斯和捕获的像素值之间仍然存在未知的转换曲线(不仅仅是比例因子,它是伽玛曲线)。

答案 1 :(得分:2)

看一下Camera.Parameters课程。

它具有相机支持的所有功能。可能是setExposureCompensation。 我对摄影知之甚少,但我的猜测是曝光补偿正在改变光圈或速度。

可能是您提到的工具正在使用捆绑的本机库。另请参阅Camera.Parameters类中给出的函数如何工作(检查android源代码)。

您还可以使用环境光传感器以勒克斯单位获得光照水平(如果这在您的项目范围内)。来自android文档:

  

Sensor.TYPE_LIGHT:

     

值[0]:SI勒克斯单位的环境光水平

Android Developer: Light Sensor-Sensor Event

您可以在文档中找到有关光传感器的更多信息。

Android Developer: Sensor

答案 2 :(得分:2)

同意,诀窍是拍照并阅读其EXIF数据。 您可以找到有关ExifInterface文档的更多信息 http://developer.android.com/reference/android/media/ExifInterface.html

根据iso和光圈值,您可以计算shuyy