我正在检测设备的方向以检查它是否倒置在表面上,然后在其上调用方法。我遇到的问题是,用户可能会无意中将设备的方向转向该位置一瞬间并返回一个面朝上的位置以纠正他们的错误,但是在他们第一次这样做时仍会调用该方法。
我正在尝试以 800 毫秒的延迟向方向添加“双重检查”,以便用户有时间在触发该方法之前更正方向。不幸的是,我无法控制onSensorChanged
调用频率以添加延迟为 800 毫秒的线程,这将仔细检查方向以防止无意的方向更改。
我的代码如下,
public SensorEventListener accelerometerListener = new SensorEventListener(){
@Override
public void onSensorChanged(SensorEvent event) {
float z_value = event.values[2];
if (z_value < 0) {
//the device is now upside-down
try {
Thread.sleep(800);
//this if statement is never called correctly because
// onSensorChanged is not called again.
if (z_value < 0) {
toggleMethod();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我的问题:有没有一种方法可以调用onSensorChanged
onSensorChanged 方法本身的延迟以进行双重检查?