正在阅读 Android RGB 光传感器 - Galaxy S5

Reading Android RGB light sensor - Galaxy S5

我正在使用 Java & Android Studio 读取 Galaxy S5 的光传感器信息。

public void onSensorChanged(SensorEvent event) {
            // TODO Auto-generated method stub

            if(event.sensor.getType()==Sensor.TYPE_LIGHT){
             currentReading = event.values[0];
//...

}

}

这给了我勒克斯值。是否可以读取 Galaxy S5 中 RGB 光传感器的各个值,以便从中获取更多信息?我查看了 Samsung SDK,但找不到此信息(如果有)。 更新:3 个传感器数据 [0](勒克斯数据)是 200 倍,1 is unchanged, [2] is times 200 to be of comparable value. Notice that the most sensible is 1 但它有时独立于其他数据移动:

发布答案只是为了帮助遇到类似问题的人:在带有 RGB 光传感器的 Galaxy 设备上,返回了 3 个值:event.values[0], event.values[1] and event.values[2]。在官方 Android 文档中只提到了第一个。查看传感器 pdf(“TMG3993、手势、颜色、ALS 和带有 mobeam 的接近传感器模块”,ams 数据表,可用:http://ams.com/eng/content/view/download/349956)后,我发现它有一个红外过滤器。

因此,来自该传感器的 RGB 信息可在 event.values[1] 中找到,因为它是唯一在用红外光瞄准时不会改变的信息。它也是 3 个值中最敏感的。

我在我的 S5 上进行了同样的尝试,发现了以下内容:

values[0]values[2] 似乎是 LUX 值,但它们太高了。 我将它们与我的万用表照度计 (Mastech ms8229) 进行了比较,它不是纯照度计,但仍然有些可靠。 高值(1000+)大约是两倍,[0] 总是高于 [2]。 我假设一个以某种方式被过滤或normalized/corrected。 并且假设它们的不准确性因设备而异,因此如果不进行校准,它们充其量只是一个粗略的指示。 它们也低于在弱光条件下测得的值。在用万用表测量 50 Lux 时,传感器显示 20。

values[1]好像是用开尔文表示光的颜色,但也很不准确。我的地方有 2700K 到 6500K 的光源,它们都经过测量 "ok" 但取决于距离,一个 4000K 飞利浦 LED 灯泡的测量值从 3900K 到 3600K。

关于问题中发布的图表,我会说 [2] 必须是 [1],另外 2 个是 [0] 和 [2],如果它是普通灯泡并且有点暗它会发出 2500K 的光,LUX 约为 10 到 20。假设在现实中它可能高达 50 Lux,这对眼睛来说完全没问题,这一切都是有道理的。

重要说明

根据光温,您可以计算出一些 RGB 值,但传感器的光电二极管会对光谱的特定波长做出反应,这就是问题所在。如果光源具有奇数或非常小的光谱(LED、CFL),则传感器可能会比在阳光下或白炽灯泡下关闭更多。

除非有人知道如何直接访问传感器,否则该值只是实际值,光色和勒克斯。

我什至用 windows 画了整个屏幕 255 红色并测量了它,将 phone 传感器放在屏幕上然后尝试计算 "backwards"。 255蓝色和绿色也做了同样的操作,结果无法使用。