第一篇文章在这里,但是stackoverflow为我解决了很多问题。不过这个,我好像想不通。我正在创建一个 android 应用程序,该应用程序在每次接近检测时将 TextView 值减 1。出于某种原因,当 Activity 启动或恢复(电源按钮)时,它会记录 2 次接近命中。我已经仔细检查以确保在按下电源按钮时我离探测器不够近。
这是代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exercise);
//start proximity
startProximitySensor(sensorListener());
}
private SensorEventListener sensorListener(){
listener = new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_PROXIMITY){
String maxRange = String.valueOf(mProximitySensor.getMaximumRange());
if(event.values[0] == Float.parseFloat(maxRange)){
updateTextView();
Log.i(TAG,"Proximity Sensor Reading: "+ String.valueOf(event.values[0]));
}
}
}
};
return listener;
}
private void startProximitySensor(SensorEventListener proximitySensorEventListener){
mSensorManager = (SensorManager)getSystemService(getApplicationContext().SENSOR_SERVICE);
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
if(mProximitySensor == null){
Log.i(TAG,"No proximity sensor found!");
}else{
proximityStarted = true;
Log.i(TAG,"Proximity started");
mSensorManager.registerListener(proximitySensorEventListener,mProximitySensor,SensorManager.SENSOR_DELAY_UI);
}
}
我设法通过在 onResume 中创建一个时间戳来解决它,并将其与每次传感器更改时生成的 SystemTime 进行比较。如果它们的差异小于 1 秒,则 TextView 不会更新。这行得通,但我仍然想知道我是否遗漏了什么。
提前致谢