我想代碼一個非常基本的光度計應用程序與我的舊的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