我想知道智能手机中的光传感器是如何工作的?它的硬件和软件方面都是如此。关于相同的任何好文章都会有所帮助。 任何帮助表示赞赏。
答案 0 :(得分:0)
硬件方面:大多数光传感器都是Photodiodes。当暴露在光线下时,它们会产生电流。光线越亮,电流越高。然后将该电流“转换”为一系列位。
(从现在开始纯理论)然后将其发送到处理光传感器的OS部分。它会收到不同的值(哦,是的,有一堆光,这里你的值是64000 / Nope,现在很暗,有200)并做任何他应该对这些值做的事情。
答案 1 :(得分:0)
听起来好像人们回答了硬件方面的问题。对于软件方面来说,它非常简单。
public class LightTrigger {
private SensorManager mgr = null;
@Override
public void onCreate(Bundle savedInstanceState) {
//YOUR CODE HERE
mgr = (SensorManager) ctxt.getSystemService(Context.SENSOR_SERVICE);
mgr.registerListener(listener,
mgr.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_UI);
}
private SensorEventListener listener = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
//Handler code goes here
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//I don't usually use this for light
}
}
}
我发现传感器值不会连续变化。我通常会看到传感器的值如下 - BRIGHT(~1000) - DIM(~600) - DARK(~100) - 两者之间没有任何内容。我想这可能是因为手机上的光线传感器插在手机扬声器旁边(从直射光中隐藏)。它的设计可能主要是为了帮助弄清楚我是否正拿着手机。
希望这有帮助!
答案 2 :(得分:-1)
嗯,我不确定这会有多大帮助,但对于软件方面,你可以看看Qt Mobility(Qt的智能手机相关库附加组件)。
例如http://doc.qt.nokia.com/qtmobility-1.0/sensors-api.html列出了Sensors API。我相信您正在寻找的是环境光传感器。
对于硬件,快速搜索会显示以下维基百科链接:http://en.wikipedia.org/wiki/LED_as_light_sensor#LED_as_light_sensor