gpt4 book ai didi

android - 返回有限范围值的光传感器代码

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:29 26 4
gpt4 key购买 nike

我正在尝试编写一个非常基本的照度计应用程序,以便与我的旧 35 毫米相机一起使用,使用我的 Galaxy S2 作为传感器。

我首先要指出的是,通过在拨号键盘上输入 star hash zero star hash,然后选择“sensor”,可以选择此手机上的隐藏/测试模式。这使得光传感器可用,当我改变光照水平时,它会以 5 为步长显示 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这根本没有帮助。我不明白内置测试模式如何可以看到整个范围,而我的代码却不能。

最佳答案

我只在 Galaxy S2 上测试过这个,但我能看到真实值的唯一方法是直接从系统设备文件中获取它:

#cat "/sys/devices/virtual/lightsensor/switch_cmd/lightsensor_file_state"

或者在java中:

Scanner st = new Scanner(new File("/sys/devices/virtual/lightsensor/switch_cmd/lightsensor_file_state"));
int lux = st.nextInt();
st.close();

关于android - 返回有限范围值的光传感器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8545686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com