我想代码一个非常基本的光度计应用程序与我的旧的35毫米相机使用我的Galaxy S2作为传感器使用。光传感器代码返回有限的值范围
我应该首先指出,通过在拨号盘键盘上输入star hash zero star hash,然后选择'sensor',可以在此手机上提供隐藏/测试模式。这使得光线传感器显示的Lux值范围在5到2000之间变化,因为我改变了光照水平。
我写的概念代码的非常简单的证明将只显示三个值,即10,100和1000在相同的照明条件范围内。我的代码是:
public class LightMeterActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mLightSensor;
private float mLux = 0.0f;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLightSensor,
SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(this);
super.onPause();
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
mLux = event.values[0];
String luxStr = String.valueOf(mLux);
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(luxStr);
Log.d("LUXTAG", "Lux value: " + event.values[0]);
}
}
}
有人可以提出为什么这可能是?
我已经看到Light sensor on Nexus One returns only two distinct values 这个问题根本没有帮助。我无法理解内置的测试模式如何能够看到完整的范围,而且我的代码不能。
AREN对于这样一个有点复杂的问题,50代表少一点? :p – poitroae 2012-01-07 01:16:43
@迈克尔:你浪费了你的时间,那你不是吗?如果你认为这种态度会让你在Stack Overflow上受欢迎,那你就错了。 – NickT 2012-01-08 11:00:53