onSensorChanged ,每 10 秒比较一次传感器数据
onSensorChanged , Compare sensor data every 10 seconds
我的代码:
@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 函数只在第一时间起作用time.After这是垃圾消息。
您可以简单地从 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) {
}
};
我的代码:
@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 函数只在第一时间起作用time.After这是垃圾消息。
您可以简单地从 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) {
}
};