gpt4 book ai didi

java - onSensorChanged ,每 10 秒比较一次传感器数据

转载 作者:行者123 更新时间:2023-12-01 18:36:58 26 4
gpt4 key购买 nike

我的代码:

@Override
public void onSensorChanged(SensorEvent event) {
float f1 = event.values[0];
float f2 = event.values[1];
float f3 = event.values[2];

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(context,"10 second",Toast.LENGTH_SHORT).show();
new Handler().postDelayed(this, 10000);
}
}, 10000);

this.LastX = event.values[0];
this.LastY = event.values[1];
this.LastZ = event.values[2];

float f4 = Math.abs(this.LastX - f1);
float f5 = Math.abs(this.LastY - f2);
float f6 = Math.abs(this.LastZ - f3);

if(f4<0.003 && f5<0.003 && f6<0.003){
MainActivity.LockState = true;
// Toast.makeText(context,"Düz zemin",Toast.LENGTH_LONG).show();
}

}


我尝试每 10 秒比较一次传感器数据,但 postDelayed 函数仅在第一次起作用。此后,toast 消息就是垃圾邮件。

最佳答案

您可以简单地从 SensorEvent 获取时间戳并检查最后一个时间戳和当前时间戳之间是否有 10 秒的差异。例如:

private SensorEventListener sensorEventListener = new SensorEventListener() {
private long lastTimestamp;

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
long currentTimestamp = sensorEvent.timestamp;
if (currentTimestamp - lastTimestamp >= TimeUnit.SECONDS.toNanos(10)) {
lastTimestamp = currentTimestamp;
Toast.makeText(mContext, "10 seconds", Toast.LENGTH_SHORT).show();
//Here you can compare sensor data
}

}

@Override
public void onAccuracyChanged(Sensor sensor, int i) {

}
};

关于java - onSensorChanged ,每 10 秒比较一次传感器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014825/

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