我正在使用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];
//...
}
}
这给了我lux值。是否可以读取Galaxy S5中RGB光传感器的各个值,以便从中获取更多信息?我查看了三星SDK,但我找不到这些信息(如果有的话)。 更新:3个传感器数据[0](勒克斯数据)是200,1不变,[2]是200,具有可比值。请注意,最明智的是1,但它有时独立于其他移动:
答案 0 :(得分:1)
发布答案只是为了帮助那些有类似问题的人:在带有RGB光传感器的Galaxy设备上,返回了3个值:event.values[0], event.values[1] and event.values[2]
。在官方的Android文档中,只提到了第一个。在查看传感器pdf(“TMG3993,Gesture,Color,ALS和接近传感器模块与mobeam”,ams数据表,可用:http://ams.com/eng/content/view/download/349956)后,我发现它有一个红外滤波器。
因此,来自该传感器的RGB信息可以在event.values[1]
中找到,因为它是唯一一个在使用红外光时不会改变的信息。它也是3个值中最敏感的。
答案 1 :(得分:0)
我在S5上尝试了相同的操作并发现了以下内容:
values[0]
和values[2]
似乎是LUX值,但它们太高了。
我将它们与我的万用表 - 测量仪(Mastech ms8229)进行了比较,它不是纯粹的测量仪,但仍然有点可靠。
高值(1000+)约为两倍,[0]总是高于[2]。
我假设有人以某种方式对其进行过滤或标准化/纠正。
并且假设它们的不准确性因设备而异,因此如果没有校准,它们最好是粗略的指示。
在低光照条件下,它们也低于测量值。使用万用表测量50 Lux时,传感器显示20。
values[1]
似乎代表开尔文的浅色,但也非常不准确。我在我的位置有2700K到6500K的光源,它们都被测得“好”,但根据距离,4000K飞利浦LED灯泡的测量范围从3900K到3600K。
关于问题中发布的图表,我会说[2]必须是[1]而另外2个是[0]和[2],如果它是普通的灯泡,有点暗淡,它会用大约10到20的LUX给出2500K的光。假设实际上它可能高达50勒克斯,这对眼睛完全没问题,这一切都是有道理的。
重要提示
从光照温度可以计算出一些RGB值,但传感器会有光电二极管对光谱的特定波长作出反应,这就是问题所在。如果光源具有奇数或非常小的光谱(LED,CFL),则传感器可能比在阳光下或使用白炽灯泡时更多。
除非有人能够弄清楚如何直接访问传感器,否则价值只是它的颜色,浅色和Lux。
我甚至拿了窗户油漆并将整个屏幕变成红色并测量了它,将手机传感器放在屏幕上,然后尝试计算“向后”。与255蓝色和绿色相同,但结果无法使用。