我正在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_FASTEST是从SENSOR_DELAY_NORMAL更改的,但速度是相同的。我感觉后面发生了某种缓冲,但我无法做到这一点。我希望在悬停手的时候,吐司只出现一次,直到我再次悬停。
发布于 2021-04-12 04:35:49
尝试设置一个名为hasDisplayedToast的布尔值,并在操作完成后将其设置为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;
}
}
}https://stackoverflow.com/questions/67049938
复制相似问题