android上的接近传感器多次提供数据

android上的接近传感器多次提供数据,android,Android,我正在Android上创建一个简单的应用程序,我正在阅读有关传感器的文章。现在,我用一个接近传感器来显示一个简单的祝酒词。当我在手机上方挥手时,传感器会显示一个由我给出的简单信息。好的,它会这样做,但是它显示祝酒词的次数太多了。 这是我正在使用的代码: public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {

我正在Android上创建一个简单的应用程序,我正在阅读有关传感器的文章。现在,我用一个接近传感器来显示一个简单的祝酒词。当我在手机上方挥手时,传感器会显示一个由我给出的简单信息。好的,它会这样做,但是它显示祝酒词的次数太多了。
这是我正在使用的代码:

    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            if(event.values[0] == 0) {
                Toast.makeText(appCompatActivity.getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
            } 
        }
    }
要获得SensorManager,请执行以下操作:

      SensorManager sensorManager = (SensorManager) appCompatActivity.getSystemService(Context.SENSOR_SERVICE);
      Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
      sensorManager.registerListener(this, proximitySensor, SensorManager.SENSOR_DELAY_FASTEST);

该参数SensorManager.SENSOR_DELAY_faster已从SENSOR_DELAY_NORMAL更改为SENSOR_DELAY_,但速度相同。我觉得后面会发生某种缓冲,但我没有做到这一点。我希望在悬停手部时,土司只显示一次,直到我再次悬停。

尝试设置名为hasDisplayedToast的bool,并在操作完成后将其设置为true。这将使它只发生一次。如果希望操作持续发生,可以设置计时器,并在一段时间后将bool设置为false。我不太熟悉这种语言,但它似乎类似于C++

 bool hasDisplayedToast = false;
 public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            if(event.values[0] == 0 && !hasDisplayedToast) {
                Toast.makeText(appCompatActivity.getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
                hasDisplayedToast = true;
            } 
        }
    }

我正在使用Java:d这很有帮助:)祝你好运。让我知道它是如何工作的。