我知道如何使用android.hardware.sensor
从光传感器获取勒克斯值。
我在市场上看到了light meter tools。应用程序描述说它可以从相机获得勒克斯值。它怎么能这样做?
另外如何设置快门速度和光圈?
答案 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
您可以在文档中找到有关光传感器的更多信息。
答案 2 :(得分:2)
同意,诀窍是拍照并阅读其EXIF数据。 您可以找到有关ExifInterface文档的更多信息 http://developer.android.com/reference/android/media/ExifInterface.html
根据iso和光圈值,您可以计算shuyy