这是我的代码:
float x;
@Override
public void onSensorChanged(SensorEvent event) {
if(event.values[0] > .2){
x = -1*(Math.round(event.values[0]));
centerx = centerx +(x*10);
}
else if(event.values[0] < -.2){
x = -1*Math.round(event.values[0]);
centerx = centerx +(x*10);
}
mCustomDrawableView.invalidate();
y = Math.round(event.values[1]);
if(event.values[2] > .4){
z = event.values[2];
}
}
我正在使用加速度计来回移动垂直线。centerx 是垂直线的顶部和底部点。我正在努力做到这一点,所以如果我将设备向右移动,这条线将向左移动,看起来它仍然在同一个位置,就好像它在物理世界中一样(想想增强现实)。
我正在使用 SensorEvent 给出的值来做一些算术来移动中心线。唯一的问题是,当我将建议移动到 5 之类的值时,加速度计值会上升,但是当我停止移动时,加速度计值会下降到 4 到 3 到 2 到 1 到 0。所以,这条线只是弹到一边,然后回到原来的中心。我正在寻找一种方法来摆脱这种“反弹”,并让生产线保持在新的位置。有任何想法吗?