0

第一篇文章在这里,但是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 不会更新。这行得通,但我仍然想知道我是否遗漏了什么。

提前致谢

4

0 回答 0